[ Foro de C ]
Hola, estoy tratando de leer un fichero binario el cual contiene elementos de una estructura, el problema esta en el fread, se me queda en "Error de lectura" y no me incrementa el contador. Muchas gracias
int Llegir_FitxerBinari (EXPERIMENT exp[],int *comptador) {
FILE *fich1;
int i=0, con,err1;
char nom1[20];
con=*comptador;
printf("Introduir nom fitxer: \n");
scanf("%s",nom1);
strcat (nom1,".bin");
fich1 = fopen(nom1, "rb");
if (fich1==NULL) {
printf("Error al obrir fitxer.\n");
} else {
printf ("Fichero de escritura abierto correctamente\n");
do {
if(con<ELEM) {//caben experimentos.
err1=fread(&exp[con], sizeof(EXPERIMENT),1,fich1);
if(err1!=1) printf("Error de lectura.\n");
if(err1==1) {
con++;
}
}
} while(!feof(fich1)&&err1==1);
}
fclose (fich1);
fflush(fich1);
*comptador=con;
return con;
}
La lógica parece buena. ¿Seguro que el fichero contiene suficientes datos como para llenar un elemento del struct? Incluye la estructura de cómo es el struct, por si acaso.
Apenas veo algún detalle que suena raro, como el hecho de que pases un contador, pero siempre empieces a leer desde el principio del fichero, porque no hay ningún "seek" para saltar los primeros datos. Pero eso no debería ser el motivo del problema, o al menos no con el dato 0.
Creo que se tiene que inicializar la variable ’con’ al menos con un uno, el 0 no te serviría tal y como lo tienes porque luego haces un *=
int i=0, con,err1;
char nom1[20];
con=*comptador
Ahhh no no que estás accediendo al puntero :-) perdona
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)