| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4079 人关注过本帖, 2 人收藏
标题:一个break无法跳出的死循环
只看楼主 加入收藏
smile_line
Rank: 2
等 级:论坛游民
帖 子:65
专家分:19
注 册:2013-3-3
结帖率:100%
收藏(2)
已结贴  问题点数:20 回复次数:19 
一个break无法跳出的死循环
程序代码:
#include <stdio.h>
#include <conio.h>
void main()
{
    int num=0;
    while(1)
    {
        if(getche()=='\n') break;
        num++;
    }
}


这个代码无法跳出死循环,用return和break都不行!
2013-04-15 16:52
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:3 
你知道'\n'用getche()怎么读到?

授人以渔,不授人以鱼。
2013-04-15 17:15
smile_line
Rank: 2
等 级:论坛游民
帖 子:65
专家分:19
注 册:2013-3-3
收藏
得分:0 
回复 2楼 TonyDeng
可是为何换成 getchar 就可以了。
2013-04-15 18:36
czzdcn123
Rank: 7Rank: 7Rank: 7
来 自:江西
等 级:黑侠
威 望:3
帖 子:258
专家分:510
注 册:2013-3-7
收藏
得分:3 
楼主仔细点吧
2013-04-15 18:55
小xiong
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:388
专家分:1722
注 册:2013-2-8
收藏
得分:3 
我的错,,,
2013-04-15 19:23
神奈创
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:67
专家分:191
注 册:2013-3-31
收藏
得分:3 
按回车返回的是\r\n,但是getche是处理完\r\n两个字符,回显并返回\r这个字符
2013-04-15 19:48
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用smile_line在2013-4-15 18:36:17的发言:

可是为何换成 getchar 就可以了。

getchar()是封装过的高级流读写函数,getch()/getche()是未封装的底层函数,不一样的。

授人以渔,不授人以鱼。
2013-04-15 20:12
郭祥
Rank: 1
等 级:新手上路
帖 子:5
专家分:4
注 册:2013-4-3
收藏
得分:3 
getche() 是从控制台取字符的,不以回车为结束 ,你可以将'\n'换为‘\t’等其他的就可以跳出去 或者将getche改为getchar();
还有你的就num++那么写也是不对的。无法自增的。
2013-04-15 20:43
郭祥
Rank: 1
等 级:新手上路
帖 子:5
专家分:4
注 册:2013-4-3
收藏
得分:0 
回复 3楼 smile_line
因为getchar是在字符缓冲区中取出来的,当你按回车的时候才会回显出来。而getche是不以回车为结束。当时就显示出来
2013-04-15 20:48
smile_line
Rank: 2
等 级:论坛游民
帖 子:65
专家分:19
注 册:2013-3-3
收藏
得分:0 
回复 8楼 郭祥
那样为何无法自增??
2013-04-16 21:04
快速回复:一个break无法跳出的死循环
数据加载中...
 
   



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

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