Ich bekomme einen sehr seltsamen Fehler beim Versuch, von einer einfachen Textdatei mit c fread() Anruf zu lesen.
Ich habe ein sehr einfaches Programm, das Fehler zu zeigen:Warum zeigt ftell() eine falsche Position nach 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;
}
Und was ich als Ausgabe erhalten:
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.
danke, ich wusste das nicht. Aber ich verstehe nicht, warum die Rückkehr von fread() nicht der Cursorposition entspricht. – ezzakrem
@ezzakrem Weil 'fread' das Ende der Zeile (das zwei Zeichen sein kann) als ein Zeichen interpretiert und es als eins meldet. –