std::feof
|
在标头
<cstdio> 定义 |
||
|
int feof( std::FILE* stream );
|
||
检查是否已抵达给定文件流的结尾。
参数
| stream | - | 要检查的文件流 |
返回值
若已抵达文件流尾则为非零值,否则为 0。
注解
此函数只报告最近的 I/O 操作所报告的流状态,它不检验关联数据源。例如,若最近一次 I/O 是返回文件最后字节的 std::fgetc,则 std::feof 返回零。下个 std::fgetc 会失败并更改流状态为文件尾。只在这之后 std::feof 才返回非零。
典型用法中,输入流在发生任何错误时停止处理;然后用 feof 和 std::ferror 来区分不同的错误条件。
示例
#include <cstdio> #include <cstdlib> int main() { int is_ok = EXIT_FAILURE; FILE* fp = std::fopen("/tmp/test.txt", "w+"); if (!fp) { std::perror("打开文件失败"); return is_ok; } int c; // 注意:是 int 而非 char,处理 EOF 所必须 while ((c = std::fgetc(fp)) != EOF) // 标准 C I/O 文件读取循环 std::putchar(c); if (std::ferror(fp)) std::puts("读取时发生了 I/O 错误"); else if (std::feof(fp)) { std::puts("成功抵达文件末尾"); is_ok = EXIT_SUCCESS; } std::fclose(fp); return is_ok; }
输出:
成功抵达文件末尾
参阅
| 检查是否到达了文件末尾 ( std::basic_ios<CharT,Traits> 的公开成员函数) |
|
| 清除错误 (函数) |
|
| 显示对应当前错误的字符串于 stderr (函数) |
|
| 检查文件错误 (函数) |