elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con función en c
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con función en c  (Leído 1,481 veces)
Gigasnike95

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Problema con función en c
« en: 13 Diciembre 2014, 21:21 pm »

Se trata de un programa básico para gestionar una biblioteca que tiene 4 opciones:

1-Insertar libros:
introduce los libros al programa
2-Mostrar libros:
muestra los datos introducidos anteriormente
3-Guardar libros:
Los guarda en el archivo Libros.txt
4-Leerlibros:
Elimina los datos introducidos por el usuario y restablece los que habíamos guardado anteriormente en el fichero Libros.txt.

Las tres primeras funcionan a la perfección,pero tengo un error en tiempo de ejecución cuando selecciono la cuarta.


Código:
#include <stdio.h>
#include <stdlib.h>

typedef struct Libros{
char titulo[100];
int codigo;
char isbn[50];
char autor[100];
float precio;}Tlibro;

int menu(void);
void Insertarlibros(Tlibro *vec,int *pos);
void Mostrarlibros(Tlibro *vec,int pos);
void Guardarlibros(Tlibro *vec,int pos,int maxtam);
void Leerlibros(Tlibro **vec,int *pos,int *maxtam);


int main(){
Tlibro * Biblioteca;
int maxtam;
int opcion;
int pos=0;;

printf("¿Cuantos libros va a almacenar en la biblioteca?\n");
scanf("%d",&maxtam);
system("cls");
Biblioteca=(Tlibro * )malloc(sizeof(Tlibro)*maxtam);


do{
opcion=menu();             
switch(opcion){
case 1:
Insertarlibros(Biblioteca,&pos);
break;

case 2:
Mostrarlibros(Biblioteca,pos);                 
break;

case 3:
Guardarlibros(Biblioteca,pos,maxtam);
break;

case 4:
Leerlibros(&Biblioteca,&pos,&maxtam);
break;

default:
printf("opcion incorrecta \n");
system("cls");             
}             
             
}while(opcion!=5);   
   
free(Biblioteca);   
system("pause");   
return 0;}

int menu(void){
int eleccion;
printf("Elija una opcion: \n\n");
printf("1-Insertar Libros \n");
printf("2-Mostrar Libros \n");
printf("3-Guardar Libros \n");
printf("4-Leer Libros desde el fichero \n");
printf("5-Salir \n");
scanf("%d",&eleccion);
system("cls");
return eleccion;}

void Insertarlibros(Tlibro *vec,int *pos){
printf("Cual es el titulo del libro %d? \n",*pos+1);
fflush(stdin);
gets(vec[*pos].titulo);
fflush(stdin);
printf("Cual es su codigo? \n");
scanf("%d",&vec[*pos].codigo);
fflush(stdin);
printf("Cual es su ISBN ? \n");
gets(vec[*pos].isbn);
fflush(stdin);
printf("Cual es su autor ?\n");
gets(vec[*pos].autor);
fflush(stdin);
printf("Cual es el precio del libro? \n");
scanf("%f",&vec[*pos].precio);
system("cls");
*pos=*pos+1;}

void Mostrarlibros(Tlibro *vec,int pos){
int i;
for(i=0;i<pos;i++){
printf("El titulo del libro %d es : %s \n",i+1,vec[i].titulo);
        printf("Su codigo es : %d \n",vec[i].codigo);
                   printf("Su ISBN es : %s \n",vec[i].isbn);
                          printf("Su autor es : %s \n",vec[i].autor);
                                 printf("Su precio es :%f euros \n",vec[i].precio);
                                                                    printf("\n\n");}
}


void Guardarlibros(Tlibro *vec,int pos,int maxtam){
     
FILE *pf;
int i;
pf=fopen("Libros.txt","w");

if(pf==NULL){
printf("Error al abrir el fichero \n");}

else{
fprintf(pf,"%d \n",maxtam);
for(i=0;i<pos;i++){     
           fprintf(pf,"%s \n",vec[i].titulo);
                      fprintf(pf,"%d \n",vec[i].codigo);
                                  fprintf(pf,"%s \n",vec[i].isbn);
                                                  fprintf(pf,"%s \n",vec[i].autor);
                                                                   fprintf(pf,"%f \n",vec[i].precio);}
}
fclose(pf);
}

void Leerlibros(Tlibro **vec,int *pos,int *maxtam){
FILE *pf;
pf=fopen("Libros.txt","r");
if(pf==NULL){
printf("Error al leer el fichero \n");}     
else{
free(*vec);
fscanf(pf,"%d",&(*maxtam));
*vec=(Tlibro*)malloc(sizeof(Tlibro)**maxtam);
*pos=0;

fscanf(pf,"%f",&(*vec[*pos]).precio);
while(!feof(pf)){
           fgets((*vec[*pos]).titulo,100,pf);
                            fscanf(pf,"%d",&(*vec[*pos]).codigo);
                                           fgets((*vec[*pos]).isbn,50,pf);
                                                        fgets((*vec[*pos]).autor,100,pf);
                                                                                      *pos++;           
                                                                                             fscanf(pf,"%f",&(*vec[*pos]).precio);}
                                                                                                 
}     
fclose(pf);}











Un saludo y gracias de antemano por responder


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Problema con función en c
« Respuesta #1 en: 14 Diciembre 2014, 12:32 pm »

Citar
fscanf(pf,"%d",&(*maxtam));
& == dirección
* == valor de la dirección
&*var == var

Sólo te comento eso xD

Di más datos sobre el error que te da. ¿Código de error?



En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con la funcion Chr
Programación Visual Basic
sircid 2 1,632 Último mensaje 9 Agosto 2006, 14:50 pm
por sircid
Problema con funcion
Programación C/C++
Caster 3 2,583 Último mensaje 30 Septiembre 2012, 08:59 am
por Caster
Problema con una funcion « 1 2 »
Programación C/C++
ThronerAXE 10 3,889 Último mensaje 9 Mayo 2013, 15:28 pm
por leosansan
Problema con Función.. « 1 2 »
ASM
Vaagish 16 9,022 Último mensaje 22 Mayo 2013, 20:19 pm
por Vaagish
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines