当两次scanf与输入一起用作字符时,为什么会跳过第二个scanf?

时间:2014-06-16 20:55:54

标签: c scanf

今天我遇到的问题是,当我使用两次scanf接受字符作为输入时,第二次scanf被跳过。

我试图弄清楚我得出的结论是,当我们在第一次扫描后按下回车键时,跳过第二次扫描,因为输入键在第二次扫描中作为输入。

有人可以解释一下它的确切原因吗?

int main()
{
     char ch;
     int num;
     scanf("%d",&num);
     scanf("%c",&ch);//This is skipped but its accept input when space as scanf(" %c",&ch) 
}

1 个答案:

答案 0 :(得分:1)

scanf("%c", &ch);

如果您没有像scanf(" %c", &ch);那样写,那么它将从前一个scanf中读取'\ n',因为您正在输入数字并按Enter键。这样它会忽略'\ n'并等到你输入一个有效的字符。