求大大们帮忙看下下面图中的代码,现在出现一个问题:while(scanf("%c",&u)&& u!='q')这个循环的 scanf("%c",&u)语句只有开始的时候会运行一次,之后循环中自动跳过了这个语句,请问怎么解决?
谢谢大家 翻了一个小时书 终于找到原因了
因为我运行程序时 每次scanf()输入一个字符或数字都要用回车跳入下一行代码, 造成“回车”遗留在缓存区 导致出错,现在 在scanf()函数后面加上 fflush(stdin); 就解决了这个问题
希望遇到类似情况的朋友看到了会有些帮助
C语言中 scanf()与循环问题
答案:2 悬赏:0 手机版
解决时间 2021-03-05 11:18
- 提问者网友:你挡着我发光了
- 2021-03-05 03:45
最佳答案
- 五星知识达人网友:神鬼未生
- 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 ...... //补充
}
}
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()语句显示出来 // }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯