![](/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.