C中的char的多个字符输入

时间:2014-07-17 07:20:41

标签: c scanf

#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

4 个答案:

答案 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);