跳转到内容

C 编程/stdio.h/feof

来自维基教科书,开放的书籍,为开放的世界

feof 是一个 C 标准库函数,在头文件 stdio.h 中声明。[1] 它的主要目的是区分流操作到达文件末尾的情况和EOF(“文件末尾”)错误代码作为通用错误指示器返回的情况,而实际上并没有到达文件末尾。

函数原型

[编辑 | 编辑源代码]

该函数的声明如下:

int feof(FILE *fp);

它接受一个参数:指向要检查的流的FILE 结构的指针。

返回值

[编辑 | 编辑源代码]

该函数的返回值是一个整数。非零值表示已到达文件末尾;值为零表示尚未到达文件末尾。

示例代码

[编辑 | 编辑源代码]
 #include <stdio.h>
 
 int main()
 {
     FILE *fp = fopen("file.txt", "r");
     int c;
     c = getc(fp);
     while (c != EOF) {
         /* Echo the file to stdout */
         putchar(c);
         c = getc(fp);
     }
     if (feof(fp))
       puts("End of file was reached.");
     else if (ferror(fp))
       puts("There was an error reading from the stream.");
     else
       /*NOTREACHED*/
       puts("getc() failed in a non-conforming way.");
 
     fclose(fp);
     return 0;
 }

对该函数的一种常见误用是尝试使用feof“抢先”。但是,这不能正常工作,因为feof仅在读取函数失败后才为描述符设置。

参考文献

[编辑 | 编辑源代码]
  1. ISO/IEC 9899:1999 规范 (PDF). p. 305, § 7.19.10.2.
[编辑 | 编辑源代码]
华夏公益教科书