CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

做一个死循环 while(1), 如何在按键盘某键时退出?

楼主ra3(军机大臣)2003-09-03 21:44:11 在 C/C++ / C语言 提问

 
  while(1)  
  {  
          i++;   //   这里执行其它的  
          //   ...如何在按键盘某键时退出?  
          //   当不按时的时候继续执循环  
  }  
   
  不用中断可以吗? 问题点数:100、回复次数:14Top

1 楼antijpn(antijpn)回复于 2003-09-03 21:51:32 得分 1

if(getch()==x)  
  break;  
  x为你要的某键的ASCII码,是一个常数Top

2 楼zhuixe(竹子)回复于 2003-09-03 21:55:15 得分 1

可以在循环中读键盘缓冲区Top

3 楼make1me1laugh(弼马温)(云中漫步)回复于 2003-09-03 22:00:58 得分 10

while   (!kbhit())  
  {  
          .....  
  }  
   
  对吗?Top

4 楼qhgary(Gary)回复于 2003-09-03 22:14:37 得分 11

while   (!kbhit())  
  {  
          .....  
  }  
  这就要看kbhit()函数怎么写了,肯定不能有getch这样的东西了Top

5 楼zhuixe(竹子)回复于 2003-09-03 22:39:03 得分 1

make1me1laugh(弼马温       的方法好像可行,我原来用过Top

6 楼lth_81(上海男生)回复于 2003-09-03 22:45:35 得分 10

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/KeyboardInput/KeyboardInputReference/KeyboardInputFunctions/GetAsyncKeyState.asp  
   
  用SHORT   GetAsyncKeyState(int   vKey);  
  其中vKey是你要的“某键”的virtual   key代码。这个函数获得vKey的状态。  
  至于要判断是否按了那个键,有下面这么一段话,我翻译不来。。  
  if   the   least   significant   bit   is   set,   the   key   was   pressed   after   the   previous   call   to   GetAsyncKeyState  
  Top

7 楼ezhou(煮花生)回复于 2003-09-03 23:09:57 得分 1

while(1)  
  {  
      ...  
      char   c_in;  
      cin   >>   c_in;  
      if   (c_in   ==   'a')//a就是你定义的按这个键就退出  
      break;  
  }Top

8 楼qianmo(广袤)回复于 2003-09-04 08:44:56 得分 1

char   x;  
  while(x!='     ')  
  {  
        ……  
        cin>>x;//'     '  
  }  
         
  Top

9 楼jakeye(旱天雷)回复于 2003-09-04 09:26:23 得分 1

我同意antijpn(antijpn)的说法。  
  但是其他人的方法我也会试一下。Top

10 楼txn230(重新开始可以嘛?)回复于 2003-09-04 09:47:28 得分 1

up  
  Top

11 楼bigbigbigsoft(bigbigbigsoft)回复于 2003-09-04 10:37:38 得分 1

while   (!kbhit())  
  {  
          .....  
  }  
  是比较好的办法啊,upTop

12 楼atlcat(猫咪饲养员)回复于 2003-09-04 11:43:43 得分 50

答案是这个样子的:  
  #include   <stdio.h>  
  #include   <conio.h>  
   
  void   main()  
  {  
  int   i=0;  
  char   ch;  
  while(1)  
  {  
  i++;  
  ch=kbhit();  
  printf("HI\n");  
  if(ch!=0)   break;  
  }  
  }Top

13 楼atlcat(猫咪饲养员)回复于 2003-09-04 11:44:28 得分 1

给分!Top

14 楼csdn5211(不同)回复于 2003-09-04 11:55:19 得分 10

cin或getchar()都需要按回车,应该用键盘扫描码。一猫的方法是正确的。如果在tc下,可以用bioskey(0)。Top

相关问题

  • 按一下键盘,在VC中怎样退出无限循环--急用
  • 求助?在进行do while ...loop循环时如何通过定时器或敲键盘退出循环?
  • 键盘!!!!!!!!!~!!!·!
  • 键盘?
  • 键盘
  • 按任意键退出循环
  • 键盘按键
  • 如何在循环程序中接受键盘信息?
  • 一百秒内没有鼠标键盘动捉自动退出怎么写?
  • 请问1:VB中使用键盘按键或按钮跳出Timer循环?

关键词

  • 键盘
  • kbhit
  • 键
  • vkey
  • 退出
  • cin
  • 方法
  • ch
  • break
  • char

得分解答快速导航

  • 帖主:ra3
  • antijpn
  • zhuixe
  • make1me1laugh
  • qhgary
  • zhuixe
  • lth_81
  • ezhou
  • qianmo
  • jakeye
  • txn230
  • bigbigbigsoft
  • atlcat
  • atlcat
  • csdn5211

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo