#include <stdio.h>
int main(void) {
char ch,ch1;
scanf("%c",&ch);/*input ab here*/
scanf("%c",&ch1);
printf("%c %c",ch,ch1);
return 0;
}
为什么这会产生a b
作为输出。我们没有为第二个变量输入任何输入,但它仍然被分配。任何人都可以解释这种行为。
如果需要,您可以检查输出here。
答案 0 :(得分:2)
我们不为第二个变量输入任何输入
这不是真的,"%c"
scanf
读取一个字符,在处理输入a
之后,"%c"
中的scanf
然后读取下一个输入字符b
。
答案 1 :(得分:2)
因为您在第一个输入中输入了2个字符,而程序只需要1:第二个字符待处理,直到下一次调用scanf
答案 2 :(得分:0)
这可能会让你摆脱这种情况
scanf("%c",&ch);/*input ab here*/
fflush(stdin);
scanf("%c",&ch1);
修改强>
您的实际问题是ch1
正在分配换行符(或IDEONE模拟器中尝试的空格)
要检查: 输入你的价值,没有任何分离。
答案 3 :(得分:0)
Scanf可以进行多次扫描:
char a1, a2, a3, a4;
scanf("%c%c%c%c", &a1, &a2, &a3, &a4);