![](/img/trans.png)
[英]fflush\flushall()\_flushall() and etc won't clear buffer in C
[英]flushall() doesn't work - in C
我必須使用getchar()
函數一個一個地獲取許多字符。
使用該函數后我必須清理緩沖區,但flushall()
不這樣做。 在函數的第二次迭代之后,它得到'\\n'
作為輸入。 我嘗試使用fflush()
、 _flushall()
,但沒有人成功做到這一點。 這是什么原因? 請幫忙。
注意:我必須使用getchar()
。
int i;
char c;
for (i = 0; i < 5; i++)
{
c = getchar();
printf("%c", c);
_flushall();
}
如果你想扔掉輸入緩沖區中的垃圾,一個好方法是
int c;
do c = getchar(); while (c != EOF && c != '\n');
這將丟棄並包括下一個換行符或文件結尾,這通常是您想要的。
如果您正在嘗試編寫一個程序,當用戶按下每個按鍵時,它會響應單個按鍵,這對您不起作用,但那是因為整個stdio.h
界面對您不起作用; 您將需要使用其他東西,例如ncurses或 GUI“小部件”庫。
我實現了一個智能解決方案來清除輸入緩沖區。 該解決方案有 3 個優點:
如果輸入緩沖區中沒有任何內容,它不會阻塞。
如果輸入緩沖區中有字符,它會清除它們並且不等待按 Enter。
輸入緩沖區中的字符(由於用戶點擊鍵盤)將不會顯示在屏幕上。
這是我的解決方案
#include <conio.h>
#include <Windows.h>
void my_flushall()
{
while (_kbhit())_getch(); // flushall
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.