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.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage