C语言中对用户输入的读取

char a,b;
printf("输入第一个字符:\n");
scanf("%c",&a);
printf("输入第二个字符:\n");
scanf("%c",&b);
为什么第二个字符输不出来呢?难道只能一句话吗,不能分开吗?

因为你输入完第一个字符后按了回车键,而回车键实际上输入了2个字符,第一个字符被scanf用来确认输入结束,第2个字节仍保留在缓冲区内,被第2个scanf读到了,因此b的值实际上是回车输入的第2个字符,是个控制字符,不可见.

以后注意了,在scanf("%c",getchar之类输入字符的语句前,要加fflush(stdin);清空缓冲区.
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-07-24
你第一个字符也输不出来吧
因为你没有输出这两个字符的语句啊
printf("输入第一个字符:\n");
scanf("%c",&a);
printf("输入第二个字符:\n");
scanf("%c",&b);
printf("%c",a);
printf("%c",b);
==================================
我不知你说的“用一句话什么意思”
如果你不想一次次用scanf printf的话 可以这样子:
char a;
while (scanf("%c",&a)!=EOF)//有字符读入
printf("%c\n",a);
第2个回答  2009-07-24
一楼正解,,你加上那个清除缓冲区函数就好了!
第3个回答  2009-07-24
程序是一句句运行的

第一个输出完

它等你输入a

所以第二个字符输不出来

你可以输入一个字符,回车

这样就有了
相似回答