/*********************************************
* @brief 冲洗缓冲区
* @param fp 文件流
* @return 是(0)否(EOF)成功
********************************************/
int fflush(FILE* fp);
!subtitle:说明
冲洗缓冲区。
对于输出流(或最后操作是输出的更新流),将缓冲区中的数据输出到相关设备
对于输入流(或最后操作是输入的更新流),行为是未定义的
如果参数 fp 为 NULL,则冲洗所有打开的输出流
!subtitle:参数
fp - 要冲洗的文件流,如果为 NULL 则冲洗所有打开的输出流
!subtitle:返回值
成功返回 0
失败返回 EOF
| 原点 | 说明 |
|---|---|
SEEK_SET |
相对文件开头 |
SEEK_CUR |
相对当前位置 |
SEEK_END |
相对文件末尾 |
文本模式下(即不含 "b"):
原点 origin 为 SEEK_SET 时,偏移量 offset 只能为零或 ftell 的返回值
原点 origin 为 SEEK_CUR 或 SEEK_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