清除 C 语言中的 cmd 输入

clear cmd input in C

提问人:iko 提问时间:8/20/2023 最后编辑:iko 更新时间:8/20/2023 访问量:52

问:

例如,我运行程序:

int a = 0;
while(a < 1000000000){
    a++;
}

此时,我将输入终端:

a\na\na\na\na\na\n

显然,我输入的文本不会被读取,所以当程序停止时,我得到这样的东西:

'a' is not recognized as an internal or external command,
operable program or batch file.

'a' is not recognized as an internal or external command,
operable program or batch file.

如何清除此输入,是否可能?

我尝试在此循环之后编写,或者在第二种情况下,它等待 EOF 并且我没有提供它, 它还表明我输入了一些东西:fseek(stdin,0,SEEK_END);while(getchar() != EOF);

C:....>test
a
a
a
a
a

帮助我解决这个问题,我想补充一点,除了标准库之外,我还可以使用 <windows.h>

C Windows 输入 cmd

评论

3赞 Pepijn Kramer 8/20/2023
当您有“C”问题时,不要同时标记“C”和“C++”。
0赞 Pepijn Kramer 8/20/2023
而且绝对不清楚你想做什么。 你的与你的可执行文件的名称无关。所以我并不惊讶你的命令提示符无法识别。int aa
0赞 Some programmer dude 8/20/2023
这就是大多数终端的工作方式。您能告诉我们为什么这是一个问题吗?
0赞 Eric Postpischil 8/20/2023
@PepijnKramer:他们想要清除终端输入缓冲区中所有挂起的输入。
0赞 iko 8/20/2023
@PepijnKramer:我知道,仅举例使用,它可以是或其他东西。我的问题是我是否可以清除在此期间输入的待处理输入。我不想为了什么而阅读它,我只想清除它,这样我就不会得到类似的东西:(或“j”无关紧要)int aint i'a'not recognized as an internal command...

答:

4赞 Ted Lyngmo 8/20/2023 #1

您可以在退出程序之前致电:FlushConsoleInputBuffer

#include <Windows.h>
int main(void) {
    int a = 0;
    while(a < 1000000000){
        a++;
    }
    FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); // last thing you do
}

评论

1赞 iko 8/20/2023
是的,它对我有用。谢谢