写一个简单的while循环,出了个问题
void main( )
{
char a='y' ;
while (a == 'y')
{
printf("相等\n");
scanf("%c",&a) ;
}
}
代码想实现每次循环后,等待用户输入确定是否继续循环,但运行结果只能输入一次,到第二次循环就退出了!
运行结果:
相等
y
相等
退出程序.....
[解决办法]
把
scanf("%c",&a)
改成
scanf(" %c",&a)
%前加一个空格
[解决办法]
至于楼上的写法,在%前加空格就是为了避免读入回车或换行
[解决办法]
缓冲区问题。在scanf后面加上
fflush(stdin);
作用是:刷新缓冲区即可。
[解决办法]
主要是 你回车符,也算是一个字符,于是程序读取了回车符.
[解决办法]
楼上的大神们都说对了,是缓冲区有个回车没有读走,
可在你原有代码scanf下面再加两行
scanf("%*[^\n]");//定位到换行符
scanf("%*c");//读走换行符
char ch;
while(1)
{
scanf("%c", &ch);
fflush(stdin);
if(ch != 'y')
break;
}