Warum zeigt ftell () nach fread () eine falsche Position an?
Beim Versuch, mit c fread () aus einer einfachen Textdatei zu lesen, tritt ein sehr seltsamer Fehler auf.
Ich habe ein sehr einfaches Programm erstellt, um diesen Fehler anzuzeigen:
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;
}
Und was ich als Ausgabe bekomme:
cur before=0
cur after reading 1000 bytes =1007
Ist das normal? Fread gibt die Zahl '1000' zurück, aber der Cursor (mit ftell ()) zeigt 1007 und jede Hilfe wird geschätzt.