这个C语言程序输入字母会出现死循环,为啥?怎么办?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这个C语言程序输入字母会出现死循环,为啥?怎么办?相关的知识,希望对你有一定的参考价值。
输入数据后,判断一下scanf函数的返回状态,返回0则读取失败。失败的原因有很多可能,比如你的这道例子,指定输入数字,但是却输入了字符,就会返回0,而且scanf不会有动作。由于num没有初始化,所以它是一个垃圾值,这就是死循环的原因。
另外,如果想要输入指定字符退出的话,在多加一个判断即可。
参考技术A 把scanf()那一句,修改成如下的形式:if(scanf("%d",&num)!=1)
printf("continue?y or n");
if(getch()!='y')break;
printf("\n");
scanf("%*[^\n]%*c");
continue;
追问
warning: implicit declaration of function 'getch' [-Wimplicit-function-declaration]
追答# include
本回答被提问者采纳 参考技术B 第二个while(1)改成while(num != 'r')就行了追问似乎行不通。
谢谢你回答我之后想问的问题。不过我想说的是问题是运行后输入任意数字都会死循环,如何让它不死循环?或者输入字母后报错?
会不会i没有重新赋值
下断点调试
为啥我的键盘字母在办公软件中输入M,会变成N 在办公软件中输入字母M会变成字母N,但在QQ聊天中
为什么我的键盘字母在办公软件中输入M,会变成N 在办公软件中输入字母M会变成字母N,但在QQ聊天中却不会
参考技术A 您好,这个就是您键盘的硬件的问题了,没别的,换一个新的键盘吧。 参考技术B 键盘客串了追问怎么恢复?
追答你是不是冲着电玩手机呢?
追问没有
我说的是电脑
追答知道了 键盘问题变不回来了
换
参考技术C 这么奇怪!追问快点帮帮我吧
追答要不要换个办公软件试试!或卸载重装下软件
以上是关于这个C语言程序输入字母会出现死循环,为啥?怎么办?的主要内容,如果未能解决你的问题,请参考以下文章
c语言 scanf("%d",&a);输入字符为啥会进入死循环?