Si verifica un errore molto strano durante il tentativo di leggere da un semplice file di testo con la chiamata c fread().
Ho fatto un programma molto semplice per dimostrare che l'errore:Perché ftell() mostra una posizione errata dopo 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;
}
E che cosa ottengo come output:
cur before=0
cur after reading 1000 bytes =1007
È normale? riporta il numero '1000' ma il cursore (con ftell()) mostra 1007 e qualsiasi aiuto sarà apprezzato.
grazie, non lo sapevo. Ma non capisco perché il ritorno di fread() non è lo stesso della posizione del cursore? – ezzakrem
@ezzakrem Perché 'fread' interpreterà la fine della riga (che può essere di due caratteri) come un carattere, e lo segnalerà come uno. –