C跳过getch

C跳过getch,c,scanf,getch,C,Scanf,Getch,当我看到在某些情况下C跳过了一些输入时,我很惊讶。在我的例子中,我使用的是带有代码::块(xterm)的Ubuntu。例如,如果我有以下部分代码: scanf("%d",&someInt); getch(); 我可以输入一个数字,但按enter键,它会保存someInt的值,并自动将enter char发送到getch()。我希望我的程序在输入数字并按enter键后等待按任意键。但这不会发生。我已经找到了解决办法,但这不是一个好办法 scanf("%d",&someInt);

当我看到在某些情况下C跳过了一些输入时,我很惊讶。在我的例子中,我使用的是带有代码::块(xterm)的Ubuntu。例如,如果我有以下部分代码:

scanf("%d",&someInt);
getch();
我可以输入一个数字,但按enter键,它会保存someInt的值,并自动将enter char发送到getch()。我希望我的程序在输入数字并按enter键后等待按任意键。但这不会发生。我已经找到了解决办法,但这不是一个好办法

scanf("%d",&someInt);
getch();
getch();

使用两个getch()解决了我的问题。我正在输入号码,必须按任意键才能继续。为什么会发生这种情况?如何解决此问题?

getch()
读取一个字符,而在您的情况下,它正在读取一个
\n
,因为在读取
someint
后,一个换行符留在缓冲区中。

您可以在
scanf
格式中包含换行符:

scanf("%d\n", &someInt);
getch();

您确定您使用的是
getch
而不是
getchar
?getchar(),抱歉:)