繁体   English   中英

flushall() 不起作用 - 在 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 个优点:

  1. 如果输入缓冲区中没有任何内容,它不会阻塞。

  2. 如果输入缓冲区中有字符,它会清除它们并且不等待按 Enter。

  3. 输入缓冲区中的字符(由于用户点击键盘)将不会显示在屏幕上。

这是我的解决方案

#include <conio.h>
#include <Windows.h>

void my_flushall()
{
    while (_kbhit())_getch(); // flushall
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM