永发信息网

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

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

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



最佳答案
  • 五星知识达人网友:神鬼未生
  • 2021-03-05 04:56
使用while的时候尽量不要使用组合条件,而应该采用这种形式:
while (1) {
 if (条件1) break;
 //...
 if (条件2) continue;
 //...
 if (条件3) return;
 //...
}


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

}
全部回答
  • 1楼网友:空山清雨
  • 2021-03-05 05:43
#include"stdio.h" main() { int a; printf("%d",scanf("%d",&a)); // 这个很明显的告诉我们 scanf()返回的并非我们输入的数值,而返回的是输入了几个数字,这里只输入了一个数 所以返回值为1 如果改为 scanf("%d",&a); printf("%d",a); 则是把我们输入的值a存储在内存中,通过printf()语句显示出来 // }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯