Вопрос по c, file – Почему ftell () показывает неправильную позицию после fread ()?

5

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

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;
}

Error: User Rate Limit Exceeded

cur before=0
cur after reading 1000 bytes =1007

Error: User Rate Limit Exceeded

Ваш Ответ

3   ответа
1

Error: User Rate Limit Exceeded

благодарю вас ! это делает это очень ясным. ezzakrem
5

Error: User Rate Limit Exceededftell:

or binary streams, the value returned corresponds to the number of bytes from the beginning of the file. For text streams, the value is not guaranteed to be the exact number of bytes from the beginning of the file, but the value returned can still be used to restore the position indicator to this position using fseek.

Error: User Rate Limit Exceeded

спасибо, что помогает! ezzakrem
10

Error: User Rate Limit Exceeded

'\n'Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

@ezzakrem Потому чтоfread будет интерпретировать конец строки (который может быть двумя символами) как один символ, и сообщит об этом как один.
спасибо, я этого не знал. Но я не понимаю, почему возврат fread () не совпадает с положением курсора? ezzakrem

Похожие вопросы