NAME
fflush - flush a streamhtml
SYNOPSIS
#include <stdio.h>編程
int fflush(FILE *stream);緩存
DESCRIPTION
For output streams, fflush() forces a write of all user-space buffered data for the given output or update stream via the stream's underlying write function.app
For input streams, fflush() discards any buffered data that has been fetched from the underlying file, but has not been consumed by the application. The open status of the stream is unaffected.ide
若是給出的文件流是一個輸出流,那麼fflush()把輸出到緩衝區的內容寫入文件. 若是給出的文件流是輸入類型的,那麼fflush()會清除輸入緩衝區。函數
fflush()在調試時很實用,特別是對於在程序中輸出到屏幕前發生錯誤片斷時. 直接調用 fflush( STDOUT )輸出能夠保證你的調試輸出能夠在正確的時間輸出. fetch
If the stream argument is NULL, fflush() flushes all open output streams.ui
For a nonlocking counterpart, see unlocked_stdio(3).spa
1.操作系統
flush(stdin)刷新標準輸入緩衝區,把輸入緩衝區裏的東西丟棄
fflush(stdout)刷新標準輸出緩衝區,把輸出緩衝區裏的東西打印到標準輸出設備上。
2.
fflush的真正做用就是當即將緩衝區中的內容輸出到設備。正由於這樣,因此只能在寫入文件的時候使用fflush。在讀取文件時使用fflush是很差的編程方法,由於那樣的代碼在一些環境下可能正常工做,但在另外一些環境下則會出錯,這致使程序不可移植。
flush即清空緩衝,在慢速設備上使用緩存是一種提高數據處理效率的手段,flush的做用是將內存中緩衝的內容實際寫入外存媒介
詳見MSDN的Kernel32!FlushFileBuffers
fclose後未必會flush一次的,操做系統會在CPU空閒的時候執行flush
3.
fflush不該該在讀取文件的時候用,而應該在寫入文件的時候用。
fflush會清空緩衝區,fclose在關閉文件以前也會清空緩衝區。若是使用exit函數退出程序,或者main函數返回,則全部打開後沒有關閉的文件會自動關閉,關閉時也會清空緩衝區。
一般,只有在程序非正常結束的狀況下,緩衝區纔不會被清除。
參考
fflush 函數 http://blog.chinaunix.net/uid-21651805-id-3482290.html
fflush函數有什麼做用? http://blog.csdn.net/stpeace/article/details/9063293
轉載自:http://www.cnblogs.com/wujing-hubei/p/5743509.html