' printf的'接着是' scanf'需要按两次ENTER键才能接受输入

时间:2013-07-12 16:45:54

标签: c

我是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 两次才能接受我的输入。有谁知道为什么会这样?

2 个答案:

答案 0 :(得分:7)

这是scanf电话中的“\ n”。删除它,并在扫描您请求的整数值后返回scanf

注意:这与scanf电话前面有printf的事实无关。

答案 1 :(得分:3)

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

改变这个:

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

到此:

scanf( "%i", &x );