函式
<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;
  }
}

另見