函数
<cstdio>

feof

int feof ( FILE * stream );
检查文件结束指示符
检查与关联的文件结束指示符是否已设置,如果已设置,则返回一个非零值。

此指示符通常由先前在上的操作设置,该操作试图在文件末尾或超出文件末尾处读取。

请注意,的内部位置指示符可能指向下一次操作的文件末尾,但文件结束指示符可能直到某个操作尝试在该点读取时才被设置。

此指示符可通过调用 clearerrrewindfseekfsetposfreopen 来清除。但是,如果位置指示符未被此类调用重新定位,下一次 I/O 操作很可能会再次设置该指示符。

参数

流 (stream)
指向一个 FILE 对象的指针,该对象标识了流。

返回值

如果与流关联的文件结束指示符已设置,则返回一个非零值。
否则,返回零。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/* feof example: byte counter */
#include <stdio.h>

int main ()
{
  FILE * pFile;
  int n = 0;
  pFile = fopen ("myfile.txt","rb");
  if (pFile==NULL) perror ("Error opening file");
  else
  {
    while (fgetc(pFile) != EOF) {
      ++n;
    }
    if (feof(pFile)) {
      puts ("End-of-File reached.");
      printf ("Total number of bytes read: %d\n", n);
    }
    else puts ("End-of-File was not reached.");
    fclose (pFile);
  }
  return 0;
}

此代码打开名为myfile.txt的文件,并通过逐个读取所有字符来计算它包含的字符数。程序检查是否已到达文件末尾,如果是,则打印读取的总字节数。

另见