2

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

4

2 回答 2

8

这是您对scanf. 删除它并scanf在扫描您请求的整数值后返回。

注意:这与scanf调用前面带有printf.

于 2013-07-12T16:48:21.740 回答
4

实际上scanf不会发出提示,如果您包含除格式说明符以外的任何内容,那么您必须以这种方式不准确地输入输入,这就是您需要ENTER再次按下的原因。

改变这个:

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

对此:

scanf( "%i", &x );
于 2013-07-12T16:49:46.867 回答