现在位置: 首页 > C 教程 > 正文

C 库函数 - fflush()

C 标准库 - <stdio.h> C 标准库 - <stdio.h>

描述

C 库函数 int fflush(FILE *stream) 用于刷新输出缓冲区。

fflush() 是 C 标准库中的一个函数,它将缓冲区中的数据立即写入到与流关联的文件或设备中。

对于输入流,它的行为是未定义的,应该避免在输入流上调用该函数。

声明

下面是 fflush() 函数的声明。

int fflush(FILE *stream)

参数

  • stream -- 指向 FILE 类型的指针,表示需要刷新缓冲区的目标流。FILE 是一个结构体,表示打开的文件流。

    • 如果 streamNULL,则会刷新所有输出流的缓冲区。
    • 如果 stream 是文件指针,则刷新该文件流的输出缓冲区。

返回值

  • 如果成功刷新缓冲区,fflush() 返回 0。

  • 如果发生错误,返回 EOF,并且设置错误标识符(ferror)。

实例

下面的实例演示了 fflush() 函数的用法。

实例

#include <stdio.h> int main() { FILE *fp; char *filename = "example.txt"; char *data = "Hello, World!"; // 打开文件用于写入 fp = fopen(filename, "w"); if (fp == NULL) { printf("无法打开文件 %s\n", filename); return 1; } // 写入数据到文件 fprintf(fp, "%s", data); // 刷新缓冲区,确保数据写入文件 if (fflush(fp) == 0) { printf("数据成功写入文件。\n"); } else { printf("刷新缓冲区时发生错误。\n"); } // 关闭文件 fclose(fp); return 0; }

代码说明:

  • 打开文件: 使用 fopen() 打开一个名为 example.txt 的文件用于写入。

  • 写入数据: 使用 fprintf() 将字符串 "Hello, World!" 写入文件。

  • 刷新缓冲区: 调用 fflush(fp) 确保数据立即写入文件,而不是留在缓冲区中。

  • 检查返回值: 如果 fflush() 返回 0,表示成功刷新缓冲区;否则,表示发生错误。

  • 关闭文件: 使用 fclose() 关闭文件。

数据成功写入文件。

程序打开文件 example.txt 并写入字符串 "Hello, World!"。

fflush(fp) 成功刷新缓冲区,返回 0,因此打印 "数据成功写入文件。"。

文件 example.txt 的内容将是:

Hello, World!

C 标准库 - <stdio.h> C 标准库 - <stdio.h>