Występuje bardzo dziwny błąd podczas próby odczytu z prostego pliku tekstowego za pomocą c wywołania fread().
zrobiłem bardzo prosty program, aby pokazać, że błąd:Dlaczego ftell() pokazuje złe położenie po 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;
}
i co otrzymuję jako wyjście:
cur before=0
cur after reading 1000 bytes =1007
Czy to normalne? fread zwraca liczbę "1000", ale kursor (z ftell()) pokazuje 1007 i każda pomoc zostanie doceniona.
dziękuję, nie wiedziałem tego. Ale nie rozumiem, dlaczego powrót fread() nie jest taki sam, jak pozycja kursora? – ezzakrem
@ezzakrem Ponieważ 'fread' zinterpretuje koniec wiersza (który może być dwoma znakami) jako jeden znak i zgłosi go jako jeden. –