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後一...