1668

8 分钟

#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

创建于 2025/8/12

更新于 2025/8/12