88问答网
所有问题
C语言scanf()返回值,为什么我输入非数字会死循环,不是又提醒再一次输入了吗
如题所述
举报该问题
推荐答案 2017-01-25
逻辑控制有误。scanf返回正确接收数据的个数,出错时返回负数。你输入一个非数字m就是0。而m==0使while无限循环——因为那个非数字符号在输入缓冲区里未被取走,所以while中的scanf碰到它又使m==0……
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://88.wendadaohang.com/zd/Mca1BgScctSB1KSgMaa.html
其他回答
第1个回答 2017-01-25
在printf前加上fflush(stdin);清除缓存区,望采纳!!!
相似回答
c语言 scanf(
"%d",&a);
输入
字符
为什么会
进入
死循环
?
答:
那么
输入了
字符它就一直留在输入缓冲区;只要缓冲区有字符
,scanf
就要去读,一读不是数字,它就跳过,试图等到输入缓冲区没有字符了才等待你输入……如此反复,当然就“
死循环
”了。为了验证,你在printf("you lose!!\n");后加一句getchar();,把缓冲区里的那个
非数字
字符接收掉,看看还会不会是“...
C语言
这代码 a
输入非
1,2 怎么就
死循环
答:
输入非
1,2的时候,switch语句执行的是default:b=1;不是重新
输入,
你下面的while循环的控制变量是b,经过上面的赋值,则b==1,即while(1),一直执行,就是
死循环了
C语言
这个 代码
为什么
输入
浮点型 和 整形 就会 进入
死循环
啊
答:
a);这里
scanf会
检测用户输入的是否是整型,如果是整型,则从缓冲区读取赋给a,如果不是则不会赋值给a,则用户输入的东西 就会留在缓冲区中,这样就造成了下次scanf读取时,由于缓冲区中有东西存在,它会直接从缓冲区中读取,结果还是不符合,还是留在 缓冲区,就这样会一直下去。所以造成了
死循环
。
c语言
中定义了int a;
输入
时故意输入字母就会
死循环
怎么解决?
答:
在
C语言
中,要
输入值
到整型变量a中,需要使用
scanf(
"%d",&a);如果是在循环中
输入,
那么一旦出错,就会导致后续均无法输入。为避免这种情况,可以使用判断scanf的
返回值
来确定输入是否成功。以下是
循环输入
整数,直到遇到-1退出的代码 while(1){ scanf("%d",&a); if(a == -1) break; ...
C语言
的问题
,为什么我
在这个程序中只要
输入
的
不是数字
就会显示第二个...
答:
输入有返回值 scanf函数的
返回值是
正确读入的变量个数 如果写上 if(
scanf(
"%d",&f[i])!=1)goto loop1;会跳转到喜欢的地方,也可以用break来跳出循环 如果你输入!做为标记符,可以在输入以后中断
循环,
进入下一步 返回值用起来比较方便
c语言
程序运行完输出结果就
返回
程序了,无法继续
输入,
需要运行一遍程序才...
答:
回答:写程序一般不允许出现
死循环,
要想测试多组数据(
循环输入
数据并运行计算),可以用: while(
scanf(
"<格式化输入字符,如(%d%c%f...)>",<赋值的变量地址>)!=EOF) { <要执行运算的代码> } 这样当你输入的值不符合变量类型,或输入其他错误信息是,就会跳出循环
c语言
的问题关于while(
scanf(
“%d",&sum)!=1)
答:
则不会读取也不会删除,之后ABC还在缓冲区内。
scanf不
停止:如果缓冲区内有内容
,scanf是
不会停下来等你输入的,因为ABC一直在缓冲区内,所以造成了一直不停重复循环。scanf的
返回值
:scanf如果成功返回的是输入的个数,当你输入ABC的时候,scanf失败,返回0,则条件一直成立,所以造成了
死循环
...
为什么循环
跳过
scanf
语句
,不
等待
输入
而直接进入下
一次循环了
。
答:
当你
输入非
整数时
,scanf
函数不能成功的将该非整数放入x
,返回值
ret为0,此时非整数还在原来的stdin流中,等到下次scanf时,scanf函数会扫描stdin流,发现流中有数据,就不会等待
输入,
而是直接将流中数据尝试放入x,这是还是一样错误,ret=0,如此
死循环,
就一直输出 “请输入一个整数:“
大家正在搜
scanf函数的返回值是什么
scanf是不是c语言关键字
c语言scanf返回值被忽略
c语言中scanf的返回值
c语言scanf返回值
在c语言中scanf什么意思
scanf返回值怎么用
scanf返回值被忽略怎么解决
scanf函数返回值坐判断条件
相关问题
C语言scanf()问题。为什么我输入非数字,比如字母之类的...
C语言的问题,高手来哦~~ 为什么输入不是数字的时候死循环输...
c语言 scanf("%d",&a);输入字符为什么会进入死...
C语言Scanf()输入会导致死循环。
c语言中怎样表示当输入非数字值时,循环结束
c语言程序运行完输出结果就返回程序了,无法继续输入,需要运行...
c语言:关于scanf()语句与while循环的问题
C语言问题,为什么输入字母就无限循环,数字没事,怎么改,谢谢