fflush(stdin)

fflush(stdin)

fflush(stdin)是一個計算機專業術語,功能是清空輸入緩衝區,通常是為了確保不影響後面的數據讀取(例如在讀完一個字元串後緊接著又要讀取一個字元,此時應該先執行fflush(stdin);)。

注意

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

詳細解釋

/*stdin就是標準輸入 std即standard(標準),in即input(輸入),合起來就是標準輸入。 一般就是指鍵盤輸入到緩衝區裡的東西。 */

函式名: fflush

功能: 清除檔案緩衝區,檔案以寫方式打開時將緩衝區內容寫入檔案

原型:int fflush(FILE *stream)

程式例:

#include <string.h>

#include <stdio.h>

#include <conio.h>

#include <io.h>

void fflush(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例程,如open、close和write來代替流I/O函式。

定義

int fflush( FILE* stream);

如果 stream指向 輸出流或者 更新流(update stream),並且這個更新流

最近執行的操作不是輸入,那么fflush函式將把任何未被寫入的數據寫入 stream

指向的檔案(如標準輸出檔案 stdout)。否則,fflush函式的行為是 不確定的。

fflush( NULL)清空所有輸出流和上面提到的更新流。如果發生 寫錯誤,fflush

函式會給那些流打上錯誤標記,並且返回EOF,否則返回0。

相關詞條

熱門詞條

聯絡我們