帮忙看看这段小程序

来源:百度知道 编辑:UC知道 时间:2024/09/21 03:34:17
#include <stdio.h>

main()
{
char ch,ah;
printf("input first char\n");
scanf("%c",&ch);

printf("input sec char\n");
scanf("%c",&ah);
}
第一个输入没有问题,到第二个的时候,输出了input sec char,但是下面的scanf没有执行,是不是键盘输入缓冲中还有数据?这个数据是\n么?如果是应为键盘缓冲中的问题如何解决?我用的是debian操作系统,fflush(stdin)我试过,不好用!
我主要想知道清空键盘缓冲数据的方法都有哪些,也向各位高手验证一下我的推断

由于你输入第一个scanf("%c",&ch); 时候,输入字符后要按回车
那么该回车在键盘缓冲区保留了,
当执行第二个scanf("%c",&ah); 时候,ah='\n'了,就是ah变量获得那个回车符。
我试试了一下,用fflush(stdin)是可以的。你应该把fflush(stdin)加到第一个scanf("%c",&ch); 后面

看不懂?

既然你知道了原因,还发贴!
scanf()两次就是了。

一楼的对!
fflush()是标准c函数中的,所以只要支持c就应该好用。
至于你那个系统没用过,不知道为什么不好用!