C 库 - fflush() 函数



C 库的 fflush() 函数用于刷新流的输出缓冲区。此函数强制将给定输出或更新流的所有缓冲数据写入文件。当应用于输入流时,其行为未定义。刷新流可确保将内存中缓冲的任何数据写入与流关联的文件或设备。

语法

以下是 C 库 fflush() 函数的语法:

int fflush(FILE *stream);

参数

  • stream: 这是一个指向 FILE 对象的指针,用于指定要刷新的流。如果 stream 为 NULL,则 fflush 将刷新所有打开的输出流。

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

返回值

如果缓冲区成功刷新,fflush 函数返回 0,表示成功。如果发生错误,则返回 EOF,表示失败,并且流的错误指示器被设置。

示例 1:刷新输出流

此示例演示如何使用 fflush 来确保缓冲输出立即写入文件。

以下是 C 库 fflush() 函数的示例。

#include <stdio.h> int main() { FILE *file = fopen("example1.txt", "w"); if (file == NULL) { perror("Failed to open file"); return 1; } fprintf(file, "Hello, World!\n"); // Ensure "Hello, World!" is written to the file immediately fflush(file); fclose(file); return 0; }

输出

以上代码将“Hello, World!”写入文件,并使用 fflush 确保数据立即写入磁盘,而不是等到文件关闭。−

Hello, World!

示例 2:刷新所有打开的输出流

在本例中,我们将不同数据写入两个文件,并使用 fflush(NULL) 刷新所有打开的输出流,确保所有数据在关闭文件之前写入磁盘。

#include <stdio.h> int main() { FILE *file1 = fopen("example3_1.txt", "w"); FILE *file2 = fopen("example3_2.txt", "w"); if (file1 == NULL || file2 == NULL) { perror("Failed to open file"); return 1; } fprintf(file1, "Data for file 1.\n"); fprintf(file2, "Data for file 2.\n"); // Flush all open output streams fflush(NULL); fclose(file1); fclose(file2); return 0; }

输出

执行上述代码后,它将不同数据写入两个文件,并使用 fflush(NULL) 刷新所有打开的输出流,确保所有数据在关闭文件之前写入磁盘。−

Data for file 1.
Data for file 2.
广告