我是C编程的初学者,我有一个问题。我将以一个简单的代码为例:
#include <stdio.h>
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 两次才能接受我的输入。有谁知道为什么会这样?
答案 0 :(得分:7)
这是scanf
电话中的“\ n”。删除它,并在扫描您请求的整数值后返回scanf
。
注意:这与scanf
电话前面有printf
的事实无关。
答案 1 :(得分:3)
实际上scanf
没有发出提示,如果你包含格式说明符以外的任何东西,那么你必须输入不正确的输入,这就是你需要再次按 ENTER 的原因。
改变这个:
scanf( "%i\n", &x );
// ^
// | remove extra \n
到此:
scanf( "%i", &x );