輸入緩衝區資料殘留問題

2022-05-22 14:27:06 字數 392 閱讀 5202

有時當編譯器執行完後,結果介面不會停在,而是一閃而沒,看不到執行結果。在結尾加上getchar同樣一閃而沒。

這是因為程式讀入資料是從讀入緩衝區讀取的,當讀入緩衝區有資料殘留時就會直接從緩衝區讀入資料,不會等待輸入,就會出現上述結果。

解決辦法有兩種:

1、清空緩衝區資料。利用fflush(stdin)函式,這是標準做法。

在linux平台下可用setbuf(stdin,null);

2、scanf("%*[^\n]%*c");這是利用掃瞄集將緩衝區的資料全部取出以達到清空緩衝區資料。

(解釋:%*[^\n]是逐個讀取'\n'字元之前的其他字元,%後面的*是將這些讀取的字元丟掉,當遇到'\n'時停止讀取操作,此時緩衝區上有乙個'\n'殘留,%*c是讀取並丟掉這個遺留的換行符。)

輸入緩衝區與輸出緩衝區

本博文通過一段程式來理解輸入緩衝區與輸出緩衝區。程式如下 author wanghao created time thu 17 may 2018 06 03 12 ampdt file name test.c description include int main int argc,const c...

清空輸入緩衝區

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

清理cin輸入緩衝區 在C 中清除輸入緩衝區

問題引入 用過c 的都明白,在運用輸入過程中會出現不經意間意外輸入錯誤的情況,導致之後的輸入無效,c 內部會繼續使用之前的意外輸入,使得程式執行錯誤。輸入緩衝區 所有從鍵盤輸入的資料,不管是字元還是數字,都是先儲存在記憶體中的乙個緩衝區裡面,叫做鍵盤緩衝區,簡稱輸入緩衝區或者輸入流。當一次鍵盤輸入結...