‘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
这一事实无关。