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仅在读取函数失败后才为描述符设置。
- ↑ ISO/IEC 9899:1999 规范 (PDF). p. 305, § 7.19.10.2.