使用fscanf()打开文件后,我可以再次阅读吗?

时间:2011-09-05 23:38:14

标签: c

我需要打开一个文本文档并阅读它的数据。此文件中的一个数据点是我需要用来创建数据结构的int。

问题:一旦我用fscanf()打开从命令行传入的文件,我可以用fscanf()或其他流读取函数再次读取该文件吗?我试过通过调用fscanf()然后调用fgetc()来做到这一点,但我发现我首先调用的那个是唯一运行的。

1 个答案:

答案 0 :(得分:4)

要重新读取已打开文件的全部或部分内容,您需要重新定位该流。

您可以使用fseek()将文件流重新定位到开头(或其他所需位置):

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

e.g。

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