複製鏈接
請複製以下鏈接發送給好友

fflush(stdin)

鎖定
fflush(stdin)是一個計算機專業術語,功能是清空輸入緩衝區,通常是為了確保不影響後面的數據讀取(例如在讀完一個字符串後緊接着又要讀取一個字符,此時應該先執行fflush(stdin);)。
外文名
fflush(stdin)
功    能
清空輸入緩衝區
適用於
部分編譯器(如VC6)
函數名
fflush

目錄

fflush(stdin)注意

此函數僅適用於部分編譯器(如VC6),但是並非所有編譯器都要支持這個功能(如gcc3.2)。這是一個對C標準的擴充。

fflush(stdin)詳細解釋

/* stdin就是標準輸入 std即standard(標準),in即input(輸入),合起來就是標準輸入。 一般就是指鍵盤輸入緩衝區裏的東西。 */
函數名: fflush
功能: 清除文件緩衝區,文件以寫方式打開時將緩衝區內容寫入文件
原型:int fflush(FILE *stream)
程序例:
#include <conio.h>
#include <io.h>
#include <stdio.h>
#include <string.h>
void flush(FILE *stream);
int main(void)
{
   FILE *stream;
   char msg[] = "This is a test";
   /* create a file */
   stream = fopen("DUMMY.FIL", "w");
   /* write some data to the file */
   fwrite(msg, strlen(msg), 1, stream);
   clrscr();
   printf("Press any key to flush DUMMY.FIL:");
   getch();
   /* flush the data to DUMMY.FIL without closing it */
   flush(stream);
   printf("\nFile was flushed, Press any key to quit:");
   getch();
   return 0;
}
void flush(FILE *stream)
{
   int duphandle;
   /* flush the stream's internal buffer */
   fflush(stream);
   /* make a duplicate file handle */
   duphandle = dup(fileno(stream));
   /* close the duplicate handle to flush the DOS buffer */
   close(duphandle);
}
如果成功刷新,fflush返回0。指定的流沒有緩衝區或者只讀打開時也返回0值。返回EOF指出一個錯誤。
注意:如果fflush返回EOF,數據可能由於寫錯誤已經丟失。當設置一個重要錯誤處理器時,最安全的是用setvbuf函數關閉緩衝或者使用低級I/0例程,如openclosewrite來代替流I/O函數。

fflush(stdin)定義

int fflush(FILE*stream);
如果stream指向輸出流或者更新流(update stream),並且這個更新流
最近執行的操作不是輸入,那麼fflush函數將把任何未被寫入的數據寫入stream
指向的文件(如標準輸出文件stdout)。否則,fflush函數的行為是不確定的。
fflush(NULL)清空所有輸出流和上面提到的更新流。如果發生寫錯誤,fflush
函數會給那些流打上錯誤標記,並且返回EOF,否則返回0。