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() { FILE* fp = std::fopen("test.txt", "r"); if(!fp) { std::perror("File opening failed"); return EXIT_FAILURE; } 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 error when reading"); else if (std::feof(fp)) std::puts("End of file reached successfully"); std::fclose(fp); }
参阅
检查是否到达了文件末尾 ( std::basic_ios<CharT,Traits> 的公开成员函数) | |
清除错误 (函数) | |
显示对应当前错误的字符串于 stderr (函数) | |
检查文件错误 (函数) |