按 W 不要太慢,否则 累加 超出 int 极限,循环次数 变负了。
#include
#include
main(){int i=0;
char ch;
printf("press W:\n");
while(1){
if (!kbhit()){i++; // 做累加或任何你想做的工作
} else {
ch=getch(); //抓1个键输入
if (ch=='W') break; //等于大写W 立即跳出while
};
};
printf("%d",i);
return 0;
}
1.c语言有专门的函数,比如bioskey()函数,用它可以获得键盘上按键的键值,获得键值之后,把它们记住,或者用宏定义,就可以为以后的 判断语句使用,
2.例程
#include
void main(void)
{
int key=0;
clrscr();
while(key != 0x11b) /*0x11b就是ESC键的键值,用它来判断结束,这是我事先知道的,方法是一样的*/
{
key = bioskey(0);
printf("%x ",key);/*把获得的键值用16进制显示*/
}
}
基本思路用多线程实现,
循环累加是线程A,
监听键盘按键是线程B,当线程B监听到用户按下"W"时就终止线程A并输出数据.
主线程
while(bPress){
i++;
sleep(1000);
}
printf(i)
起一个监控线程
while(1)
{
ch=getch();
if (ch=='W')
{
bPress = false;
break; //等于大写W 立即跳出while
}
};