‘printf’后跟’scanf’需要按两次ENTER键才能接受输入

我是C编程的初学者,我有一个问题。 我将以一个简单的代码为例:

#include  int main( void ) { int x; printf( "Please type the number 10." ); scanf( "%i\n", &x ); if ( x == 10 ) printf( "Thank you!\n" ); return 0; } 

正如预期的那样,当我编译并运行该程序时,我的终端显示以下消息:

 "Please type the number 10." 

然后它等待输入,所以我输入它要求的数字(10),然后按ENTER键 。 问题是,在我按一次ENTER后,它会移动到一个新行并等待更多输入。 只有在输入10并再次按下ENTER后才能继续(…显示“谢谢!”)。

所以看来我必须按两次ENTER才能接受我的输入。 有谁知道为什么会这样?

实际上scanf没有发出提示,如果你包含格式说明符以外的任何东西,那么你必须输入不正确的输入,这就是你需要再次按ENTER的原因。

改变这个:

 scanf( "%i\n", &x ); // ^ // | remove extra \n 

对此:

 scanf( "%i", &x ); 

这是你对scanf的调用中的“\ n”。 删除它,扫描您请求的整数值后scanf将返回。

注意:这与scanf调用前面有printf这一事实无关。