首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

出现了个有关问题 不知道在哪儿

2013-04-02 
出现了个问题不知道在哪儿#include stdio.hint main(){float a,bfloat sumint chprintf(你选择的是

出现了个问题 不知道在哪儿
#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的返回值。

热点排行