Linux下getchar()輸入緩衝區stdin問題分析與處理

今天在寫一個程序,想讓這個程序每次只接受一個字符輸入,然後能馬上顯示出來.

使用的函數爲getchar(),但是發現由於getchar是從stdin的緩衝區進行讀取.如果緩衝區還有信息會再下次讀取緩衝區.

這就造成即使不輸入也會輸出很多之前遺留的字符.

 

解決辦法:

在獲取完字符後,加入這句話一次性讀完回車前所有字符.

char ch;

ch = getchar();

while('\n' == getchar());

 

這樣就可以了.網上有提到fflush或者setbuf,也用了一下,但似乎不能解決這個問題.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章