函数
<cstdio>

fflush

int fflush ( FILE * stream );
刷新流
如果给定的stream是为写入而打开的(或者它是为更新而打开的,并且最后一个I/O操作是输出操作),那么它的输出缓冲区中的任何未写入数据将被写入到文件中。

如果stream是一个空指针,则所有这些流都将被刷新。

在所有其他情况下,行为取决于具体的库实现。在某些实现中,刷新一个为读取而打开的流会导致其输入缓冲区被清空(但这并不是可移植的预期行为)。

调用此函数后,流仍然保持打开状态。

当文件关闭时(无论是由于调用fclose还是程序终止),所有与之关联的缓冲区都会被自动刷新。

参数

stream
指向一个FILE对象的指针,该对象指定了一个缓冲流。

返回值

零值表示成功。
如果发生错误,则返回EOF并设置错误指示器(请参阅ferror)。

示例

在为更新(即,既可读又可写)打开的文件中,在执行输入操作之前,流应在输出操作后被刷新。这可以通过重新定位(fseekfsetposrewind)或通过显式调用来完成fflush,如下例所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* fflush example */
#include <stdio.h>
char mybuffer[80];
int main()
{
   FILE * pFile;
   pFile = fopen ("example.txt","r+");
   if (pFile == NULL) perror ("Error opening file");
   else {
     fputs ("test",pFile);
     fflush (pFile);    // flushing or repositioning required
     fgets (mybuffer,80,pFile);
     puts (mybuffer);
     fclose (pFile);
     return 0;
  }
}

另见