出现了个问题 不知道在哪儿
#include <stdio.h>
int main()
{
float a,b;
float sum;
int ch;
printf("你选择的是加法运算,请输入两个数值\n");
ch=scanf("%f %f",&a,&b);
while(ch!=2)
{
printf("你输入的数据无效,请继续输入\n");
ch=scanf("%f %f",&a,&b);
}
sum=a+b;
printf("结果是:%f\n",sum);
}
这个程序我输入一个错误数据的话 程序就一直打印"你输入的数据无效,请继续输入\n"
难道是scanf语句用错了吗 初期小白一个 c
[解决办法]
输入了非法数据,键盘缓冲区就可能还个有残余信息问题,造成死循环。
while(ch!=2)
{
printf("你输入的数据无效,请继续输入\n");
fflush(stdin);
ch=scanf("%f %f",&a,&b);
}
[解决办法]
因为输入有误那么,ch的值就不是2了,但是你的输入数据还在缓冲区里,所以它会使用上次输入的数据去匹配,然而不能匹配成功,返回者就不是2,所以你的结果是一直打印:”你输入的数据无效,请继续输入“
[解决办法]
在每个最后不带\n的printf后面加fflush(stdout);
在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);
另外请检查scanf的返回值。