| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2604 人关注过本帖
标题:C的一个死循环,请各位高人看看
只看楼主 加入收藏
qinliang
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-9-2
收藏
 问题点数:0 回复次数:10 
C的一个死循环,请各位高人看看
#include<stdio.h>
void main()
{
int i=0;
char c;
while(1)
{
c='\0';
 while(c!=13&&c!=27)
 {
 c=getchar();
 printf("%c\n",c);
 }
 if(c==27) break;
 i++;
 printf("The NO. is %d!\n",i);
}

运行后,输入了字母,然后在按ESC键和输入12和27都跳不出循环,新手上路,请个位高人指点一下,谢了
printf("The end!");
}
搜索更多相关主题的帖子: 高人 
2008-09-02 21:57
qfyzy
Rank: 2
等 级:论坛游民
威 望:1
帖 子:380
专家分:86
注 册:2008-2-17
收藏
得分:0 
getchar()能接受到ESC么

当对C的经验增加时,它会显的很好用.----Dennis M Ritche如是说
2008-09-02 22:09
qingxin111
Rank: 2
等 级:论坛游民
帖 子:71
专家分:29
注 册:2008-4-10
收藏
得分:0 
getchar()每次只能输入一个字符,如果你输入27,它会把2和7分开来,不会当作一个字符看待.
2008-09-02 22:14
mythhaha
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2008-3-17
收藏
得分:0 
这个题主要在于 :c 是字符型的,如果13和27 不加单引号,则表示的是ASC2码,必须找到对应的值才行
2008-09-02 22:33
xuqing520
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-8-31
收藏
得分:0 
好像getchar()不能接受ESC指令,你换成getche()就可以了!
2008-09-03 17:54
jianyitianxia
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-8-28
收藏
得分:0 
我跟以上高手的意见一样
getchar()只能接受一个字符
2008-09-03 19:47
qilin_zhang
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-9-3
收藏
得分:0 
回复 1# qinliang 的帖子
你的外循环是:while(1),while的结构是while(判断条件),如果条件是真,则执行该循环;否则,循环停止。而该循环的判断条件是:1,也就是判断条件始终为真,从而导致该程序无限循环。即使是你在输入27时满足了if语句的条件,跳出了本次循环,但是在继续判断while中的条件时仍为真,则又开始进行下一次循环,如此反复的进行,该程序就成了死循环。
2008-09-03 20:22
葬烟
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2008-9-3
收藏
得分:0 
这个程序没有问题。c是一个字符,13是回车键,27是esc键。也就是说当输入为回车或者esc的时候程序终止,并且输出所录入的字符。但是这里有两个问题要注意。一个是不管你输入的是什么,输入行都是以回车键完结的。并不会向程序所写一样,输入一个就输出一个字符。第二个是,回车键已经作为输入终结用了,所以你定义它作为程序完结的开关会不起作用。
举例来说,输入:abcde回车,输出为a,b,c,d,e。但是此时程序没有终止,还在输入状态下,因为没有碰到开关关键字。如果输入为:abcde ese键 回车。输出为:a,b,c,d,e,然后程序终止。
以上用gcc4.0测试通过。
2008-09-03 20:57
妍清舞
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2007-11-12
收藏
得分:0 
char c -> int c 或者 改为字符串类型  这样就能比较
2008-09-03 21:29
duanqilong
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-5-6
收藏
得分:0 
[bo][un]qilin_zhang[/un] 在 2008-9-3 20:22 的发言:[/bo]

你的外循环是:while(1),while的结构是while(判断条件),如果条件是真,则执行该循环;否则,循环停止。而该循环的判断条件是:1,也就是判断条件始终为真,从而导致该程序无限循环。即使是你在输入27时满足了if语 ...

跟for( ; ; ; )循环一个道理,没有了中间的判断语句就会一直做下去.不同的是for是不用判断,而while(1)多了一个判断,但却永远是为真,所以也是一直做下去.
2008-09-10 07:02
快速回复:C的一个死循环,请各位高人看看
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016281 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved