55问答网
所有问题
C语言scanf()返回值,为什么我输入非数字会死循环,不是又提醒再一次输入了吗
如题所述
举报该问题
推荐答案 2017-01-25
逻辑控制有误。scanf返回正确接收数据的个数,出错时返回负数。你输入一个非数字m就是0。而m==0使while无限循环——因为那个非数字符号在输入缓冲区里未被取走,所以while中的scanf碰到它又使m==0……
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://55.wendadaohang.com/zd/IL48GFcLLecG8RcFI44.html
其他回答
第1个回答 2017-01-25
在printf前加上fflush(stdin);清除缓存区,望采纳!!!
相似回答
C语言scanf()
问题。
为什么我输入非数字,
比如字母之类的
会死循环
???
答:
scanf
叫做“格式化输入”函数,这个函数是“脆弱型”的输入处理,在遇到非法输入的时候,只会跳过,不会清理输入缓冲区,造成了你在while中这样做就是
死循环,
因为缓冲区一直有“已经输入的并且未清除的内容”。解决办法很简单,在printf语句之前,清理一下缓冲区即可:flushall();printf(...);...
c语言 scanf(
%d,a);
输入
字符
为什么会
进入
死循环
?
答:
那么
输入了
字符它就一直留在输入缓冲区;只要缓冲区有字符
,scanf
就要去读,一读不是数字,它就跳过,试图等到输入缓冲区没有字符了才等待你输入……如此反复,当然就“
死循环
”了。为了验证,你在printf(you lose!!n);后加一句getchar();,把缓冲区里的那个
非数字
字符接收掉,看看还会不会是“死循...
C语言
的问题
,为什么我
在这个程序中只要
输入
的
不是数字
就会显示第二个...
答:
scanf函数的
返回值是
正确读入的变量个数 如果写上 if(
scanf(
"%d",&f[i])!=1)goto loop1;会跳转到喜欢的地方,也可以用break来跳出循环 如果你输入!做为标记符,可以在输入以后中断
循环,
进入下一步 返回值用起来比较方便
这个
C语言
程序
输入
字母会出现
死循环,为什么
?怎么办?
答:
输入数据后,判断一下scanf函数的返回状态,返回0则读取失败
。失败的原因有很多可能,比如你的这道例子,指定输入数字,但是却输入了字符,就会返回0,而且scanf不会有动作。由于num没有初始化,所以它是一个垃圾值,这就是死循环的原因。另外,如果想要输入指定字符退出的话,在多加一个判断即可。
C语言
中while
循环
的奇怪现象
答:
scanf("%d",&i); 这里是要求
输入数字
,一旦输入的不是数字,函数会忽略这个输入字符,继续读下一个
输入,
但这个
非数字
字符却存在了缓存中,因此
,scanf()
函数又会读到缓存中的这个字符,再次忽略之,继续读。。。所以成
死循环了
。解决办法:while(i!=0){ printf("wrong");scanf("%d",&i);ge...
大家正在搜
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语言问题,为什么输入字母就无限循环,数字没事,怎么改,谢谢