std::feof
来自cppreference.com
在标头 <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 (函数) | |
检查文件错误 (函数) |