国际访客建议访问 Primers 编程伙伴 国际版站点 > C 教程 > fflush 以获得更好的体验。

# C 语言标准库函数 fflush

在头文件 stdio.h 中定义。
/*********************************************
 * @brief 冲洗缓冲区
 * @param fp 文件流
 * @return 是(0)否(EOF)成功
 ********************************************/
int fflush(FILE* fp);

!subtitle:说明

冲洗缓冲区。

  • 对于输出流(或最后操作是输出的更新流),将缓冲区中的数据输出到相关设备

  • 对于输入流(或最后操作是输入的更新流),行为是未定义的

如果参数 fpNULL,则冲洗所有打开的输出流

!subtitle:参数

  • fp - 要冲洗的文件流,如果为 NULL 则冲洗所有打开的输出流

!subtitle:返回值

  • 成功返回 0

  • 失败返回 EOF

# 原点

原点 说明
SEEK_SET 相对文件开头
SEEK_CUR 相对当前位置
SEEK_END 相对文件末尾

文本模式下(即不含 "b"):

  • 原点 originSEEK_SET 时,偏移量 offset 只能为零或 ftell 的返回值

  • 原点 originSEEK_CURSEEK_END 时,偏移量 offset 只能为零

# 示例

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    // 打开文件
    FILE* fp = fopen("/tmp/test.txt", "wb+");

    if (fp == NULL)
    {
        perror("文件打开失败");
        return 1;
    }

    
    fputs("0123456789", fp);    // 写文件
    fflush(fp);
    quick_exit(0);   // quick_exit 不会自动冲洗 IO 流
    
    return 0;
}

说明:

示例中没有调用 fclose 函数关闭文件;通过 quick_exit 函数退出时也不会自动冲洗文件流。

由于手动调用 fflush 冲洗了文件流,因此查看文件时可以看到相应的内容;如果没有调用 fflush,则文件将会是空的。

# 推荐阅读

# 参考标准

  • C23 standard (ISO/IEC 9899:2024):

    • 7.21.5.2 The fflush function (p: TBD)

  • C17 standard (ISO/IEC 9899:2018):

    • 7.21.5.2 The fflush function (p: TBD)

  • C11 standard (ISO/IEC 9899:2011):

    • 7.21.5.2 The fflush function (p: 305)

  • C99 standard (ISO/IEC 9899:1999):

    • 7.19.5.2 The fflush function (p: 270-271)

  • C89/C90 standard (ISO/IEC 9899:1990):

    • 4.9.5.2 The fflush function

本文 更新于: 2025-11-27 09:38:08 创建于: 2025-11-27 09:38:08