Linux程式設計 清空標準輸入緩衝區

2021-06-21 16:49:41 字數 826 閱讀 9501

linux程式設計的時候需要清空標準輸入緩衝區,於是使用了如下windows程式設計中的方法:

1.fflush(stdin);這個fflush()函式根本不是標準c中的函式,只是標準c的擴充套件,所以在linux中使用根本不行;

2.中網上搜尋了下,發現有網友建議使用rewind(stdin);這個函式其實是將指標指向流的開始處。但是它是檔案操作中的乙個函式,操作的是file型流,在windows程式設計中是可以清空標準輸入緩衝區的,但是在linux中不行。

3.通過讀完標準緩衝區中的剩餘字元並丟棄掉來清空標準緩衝區,使用的函式是getchar(),此函式的作用是從標準輸入緩衝區中讀出乙個字元,此方法中linux中可行。

如果需要清除stdin可以通過如下迴圈實現:

char ch;

while((ch=getchar())!='/n'&&ch!=eof);

以上語句將清除stdin中的字元,知道遇到換行符或者是讀完緩衝區。

以上的方法均可以在windows程式設計中用來清除緩衝區;

4.在linux程式設計中也還是有一種用來清空stdin中的方法,直接呼叫如下的函式:

setbuf(stdin, null);

此函式我還沒有來得及測試;

通過以上分析,在linux下清空stdin用兩種方法:

1.通過讀取剩餘的字元並丟棄掉;

char ch;

while((ch=getchar())!='/n'&&ch!=eof);

或者是:

char s[1024];

fgets(s,1024,stdin);

2.使用函式setbuf(stdin,null);

清空輸入緩衝 與 fflush

1.為什麼 fflush stdin 是錯的首先請看以下程式 include stdio.h int main void return 0 這個程式首先會提示使用者輸入乙個整數,然後等待使用者輸入,如果使用者輸入的是整數,程式會輸出剛才輸入的整數,並且再次提示使用者輸入乙個整數,然後等待使用者輸入。...

清空輸入緩衝區

清空輸入緩衝區 cin.clear 清除錯誤標記,比如要求輸入int型,但我們輸入了char型,就會導致輸入錯誤,產生錯誤標記 cin.sync 清空輸入緩衝區 cin.ignore n,ch 第乙個引數是清空輸入緩衝區的大小,第二個引數是終止字元 注 終止字元也會被丟棄 常用形式有以下兩種 cin...

Linux下如何清空輸入緩衝區

今天在linux下編寫資料結構課程的乙個旅遊管理程式時,遇到了一些有關鍵盤輸入緩衝區的問題。使用scanf函式進行等待使用者輸入時,使用者輸入完會在緩衝區裡遺留乙個換行符 n 如果不清除掉這個換行符,就會在下一次的scanf中被作為輸入,直接跳過,不會等待使用者的輸入,所以,一般在呼叫scanf後一...