Recibo un error muy extraño al intentar leer un archivo de texto simple con la llamada c fread().
hice un programa muy simple para mostrar que el error:¿Por qué ftell() muestra una posición incorrecta después de fread()?
int main(int argc ,char ** argv) {
FILE* fh = fopen("adult.txt","r");
if(fh==NULL){
printf("error opening file\n");
exit(0);
}
int s = 1000;
printf("cur before=%d\n",ftell(fh));
char* b = malloc (sizeof(char)*s);
int k =fread(b,sizeof(char),s,fh);
printf("cur after reading %d bytes =%d\n",k,ftell(fh));
return EXIT_SUCCESS;
}
Y lo que me pasa como salida:
cur before=0
cur after reading 1000 bytes =1007
¿Eso es normal? fread devuelve el número '1000' pero el cursor (con ftell()) muestra 1007 y se apreciará cualquier ayuda.
gracias, no lo sabía. Pero no entiendo por qué el retorno de fread() no es lo mismo que la posición del cursor? – ezzakrem
@ezzakrem Porque 'fread' interpretará el final de la línea (que puede tener dos caracteres) como un carácter, y lo informará como uno solo. –