Namespaces
Variants

std:: feof

From cppreference.net
< cpp ‎ | io ‎ | c
定义于头文件 <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("File opening failed");
        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 error when reading");
    else if (std::feof(fp))
    {
        std::puts("End of file reached successfully");
        is_ok = EXIT_SUCCESS;
    }
    std::fclose(fp);
    return is_ok;
}

输出:

End of file reached successfully

参见

检查是否已到达文件末尾
( std::basic_ios<CharT,Traits> 的公开成员函数)
清除错误状态
(函数)
将当前错误对应的字符串输出到 stderr
(函数)
检查文件错误
(函数)
C 文档 关于 feof