永发信息网

C语言中 scanf()与循环问题

答案:2  悬赏:0  手机版
解决时间 2021-03-05 11:18
求大大们帮忙看下下面图中的代码,现在出现一个问题:while(scanf("%c",&u)&& u!='q')这个循环的 scanf("%c",&u)语句只有开始的时候会运行一次,之后循环中自动跳过了这个语句,请问怎么解决?

谢谢大家 翻了一个小时书 终于找到原因了
因为我运行程序时 每次scanf()输入一个字符或数字都要用回车跳入下一行代码, 造成“回车”遗留在缓存区 导致出错,现在 在scanf()函数后面加上 fflush(stdin); 就解决了这个问题
希望遇到类似情况的朋友看到了会有些帮助



最佳答案
使用while的时候尽量不要使用组合条件,而应该采用这种形式:
while (1) {
 if (条件1) break;
 //...
 if (条件2) continue;
 //...
 if (条件3) return;
 //...
}


所以可以将你的改为:
while(1)
{
    scanf("%c",&u);
    if(u=='p')
        {
            break;
        }
    else
    {
        case ...... //补充
    }

}
全部回答
#include"stdio.h" main() { int a; printf("%d",scanf("%d",&a)); // 这个很明显的告诉我们 scanf()返回的并非我们输入的数值,而返回的是输入了几个数字,这里只输入了一个数 所以返回值为1 如果改为 scanf("%d",&a); printf("%d",a); 则是把我们输入的值a存储在内存中,通过printf()语句显示出来 // }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
3DS口袋妖怪XY神兽能互传吗
胖丫米线地址有知道的么?有点事想过去
提临时额度,无法调整的代码,有人了解代码的
公安局领导知法犯法,怎么处理
简述平型关大捷的历史意义。
【包扎的拼音】包扎的扎怎么拼音?
佬俵食品橄榄蛋糕专卖陆川旗舰店在哪里啊,我
如何判断化粪池满了
捷信不还款会不会去老家找人?
乌衣巷桥地址有知道的么?有点事想过去
维生素b12和自血穴位注射
讽刺对象当伴郎的话
曲姓氏怎么读
【服装展示设计】服装展示设计说明该如何写
置顶肉丸东大街店地址在哪,我要去那里办事
推荐资讯
减肥到底能不能喝小米粥?网上说法不一,有的
智能拐杖的市场前景如何?
中国北纬50度以北的领土有多大
集合的表示方法比如 表示方程 x²-3x+2=0
A为实对称矩阵,求正交矩阵Q,使Q∧-1AQ为对
C语言编译之后出现Segmentation fault (core
家庭装修应注意哪些问题?
形容十月的诗句
英语这是什么
爱心100+母婴用品(旗舰店)地址有知道的么?有
dnf怎么下载一半就下载不了
淘小金网站赚的钱会不会提不出来
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?