#C 语言标准库函数 feof
/*********************************************
* @brief 检查是否已到达给定文件流的末尾
* @param fp 文件流
* @return 是(非 0)否(0)到达文件流末尾
********************************************/
int feof(FILE* fp);
说明
检查是否已到达给定文件流的末尾。
注意,此函数并不检查文件流关联的数据源,而是报告最近一次 I/O 操作的状态。
最近一次 I/O 操作 越过 文件末尾时,此函数才会返回非 0。例如:
- 剩余 10 字节的文件流,读取 10 个字节时,此函数返回 0(未到达文件末尾)
- 剩余 10 字节的文件流,读取 11 个字节时,此函数返回非 0(到达文件末尾)
- 通过 fgetc 读取到文件最后一个字节时,此函数返回 0(未到达文件末尾)
再次调用 fgetc 后,此函数返回非 0(到达文件末尾)
参数
fp
- 要检查的文件流
返回值
- 到达文件流末尾则返回非 0
- 否则返回 0
#示例
#include <stdio.h>
int main(void)
{
// 打开文件
FILE* fp = tmpfile();
if (fp == NULL)
{
perror("文件打开失败");
return 1;
}
// 写文件
fwrite("ABCD", 4, 1, fp);
// 重置位置
rewind(fp);
// 读取文件
do
{
int ch = fgetc(fp);
printf("'%c'(%d)\n", (char)ch, ch);
}
while(!feof(fp));
// 关闭文件
fclose(fp);
return 0;
}
运行结果:
'A'(65) 'B'(66) 'C'(67) 'D'(68) 'ÿ'(-1)
说明:
文件有 4 个字节:'A','B','C','D',读取第 5 个字节时,feof
才返回非 0(到达文件末尾)。
#推荐阅读
#参考标准
- C11 standard (ISO/IEC 9899:2011):
- 7.21.10.2 The feof function (p: 339)
- C99 standard (ISO/IEC 9899:1999):
- 7.19.10.2 The feof function (p: 305)
- C89/C90 standard (ISO/IEC 9899:1990):
- 4.9.10.2 The feof function