预期的以下代码应该接受来自用户的两个char值。但它只接受ch1的一个值,然后打印“hello”。
#include<stdio.h>
int main()
{
char ch1, ch2;
printf("Enter a char: ");
scanf("%c",&ch1);
printf("Enter second char: ");
scanf("%c",&ch2);
printf("Hello");
return 0;
}
它不接受ch2的第二个值。可能的原因是什么? 据我所知,它应该接受2个字符。
答案 0 :(得分:1)
它只接受一个char,因为第一次调用scanf()
会在输入流中留下换行符。
您可以通过以下方式忽略它:
scanf(" %c",&ch2); // note the leading space.
这将确保忽略先前输入的换行符。格式字符串中的空白区域告诉scanf()
忽略任何数量的空白字符。您可能还想检查scanf()
次呼叫的返回值,以防它失败。
来自scanf()
:
. A sequence of white-space characters (space, tab, newline,
etc.; see isspace(3)). This directive matches any amount of
white space, including none, in the input.