这个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);输入字符为啥会进入死循环?

C语言文件操作为啥这个文件读取进入死循环了?

C++——while循环误输入非数字(如字母,标点)导致死循环的解决方法

c语言一个死循环中为啥执行完一个功能函数就退出了?

我的vs.net为啥总是无法启动调试?