做一个死循环 while(1), 如何在按键盘某键时退出?
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



