c语言大佬们帮帮忙,这两个循环怎么输出不一样

第一个循环可以用于筛选整数,然后q推出,但第二个输入q后怎么就无限循环了/(ㄒoㄒ)/~~

scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束”则返回EOF。
如:scanf("%d %d",&a,&b);
函数返回值为int型。如果a和b都被成功读入,那么scanf的返回值就是2;
如果只有a被成功读入,返回值为1;
如果a和b都未被成功读入,返回值为0;
如果遇到错误或遇到end of file,返回值为EOF。end of file为Ctrl+z 或者Ctrl+d
第一个为:从终端读取无符号长整形,读取成功,scanf返回1,否者返回0.
while(条件);当条件为真的时候执行while语句。所以输入数字都为读取成功,返回1,1==1为真,执行while,当输入q时,读取失败,返回0,0==1为假,退出while。
第二个为:从终端读整形,读取成功,scanf返回1,否者返回0.
所以输入数字都为读取成功,返回1,1==0 为假,跳出while,当输入q时,读取失败,返回0,0==0为真,执行while。由于字符q一直没有被吃掉,导致q一直存在缓存中,被下一个scanf读取。一直读取失败。构成死循环。
建议在while中添加getchar(); 来吃掉字符即可。追问

感谢😊

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-02-06
应该是循环里没有添加输入q后的break退出循环的语句吧追问

我不是想break,只是想让他像第一个一样可以持续修改responce的值直到它获得整数时才跳出,这个为什么不能实现呢???

追答

获得整数后不得跳出while语句嘛,要不就会一直printf什么num1到5的那句话呀

具体的例子你到csdn论坛里面找找看看

相似回答