Как только файл открывается с помощью fscanf (), могу ли я прочитать его снова? - PullRequest
1 голос
/ 06 сентября 2011

Мне нужно открыть текстовый документ и прочитать его данные.Одна из точек данных в этом файле - это int, который мне нужно использовать для создания структуры данных.

Вопрос: Как только я открываю файл, переданный из командной строки с помощью fscanf (), могу ли я прочитать файлснова с fscanf () или другой функцией чтения потока?Я попытался сделать это, вызвав fscanf (), а затем fgetc (), но я обнаружил, что единственный, кого я вызываю первым, - единственный, который запускается.

1 Ответ

4 голосов
/ 06 сентября 2011

Чтобы перечитать весь или часть открытого файла, вам необходимо изменить положение потока.

Вы можете использовать fseek () , чтобы переместить поток файлов в начало (или другую желаемую позицию):

int fseek(FILE *stream_pointer, long offset, int origin);

, например

  FILE *file_handle;
  long int file_length;

  file_handle = fopen("file.bin","rb");
  if (fseek(file_handle, 0, SEEK_SET)) 
  {
    puts("Error seeking to start of file");
    return 1;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...