求C++按键响应的方式

我想用即时读取按键来控制程序比如,程序循环,无限次的累加,在循环累加的过程中,如果一旦键盘敲一下“W”,无需回车,就跳出循环并输出已循环的次数,该怎么实现?... 我想用即时读取按键来控制程序
比如,程序循环,无限次的累加,在循环累加的过程中,如果一旦键盘敲一下“W”,无需回车,就跳出循环并输出已循环的次数,该怎么实现?
展开
 我来答
金色潜鸟
2013-02-17 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5633万
展开全部
按 W 不要太慢,否则 累加 超出 int 极限,循环次数 变负了。
#include<stdio.h>
#include <conio.h>
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;
}
强立科技
2024-08-14 广告
信号放大器安装?这个问题是见仁见智的。这些都必须选用与之对应的信号放大器。 如果自己实在不懂怎么选择,可以咨询专业人员,你只需告诉专业人员需要解决的问题,一般都能适合你的设备给您。建议咨询北京强立科技有限公司,公司专业从事周边地区电视器材销... 点击进入详情页
本回答由 强立科技提供
tattackor
2015-08-08 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:878万
展开全部

1.c语言有专门的函数,比如bioskey()函数,用它可以获得键盘上按键的键值,获得键值之后,把它们记住,或者用宏定义,就可以为以后的 判断语句使用,

2.例程

#include<stdio.h>
void main(void)
{
    int key=0;
    clrscr();
    while(key != 0x11b)   /*0x11b就是ESC键的键值,用它来判断结束,这是我事先知道的,方法是一样的*/
    {
        key = bioskey(0);
        printf("%x ",key);/*把获得的键值用16进制显示*/
    }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chrisilc
2013-02-17 · TA获得超过122个赞
知道答主
回答量:83
采纳率:0%
帮助的人:71.2万
展开全部
基本思路用多线程实现,
循环累加是线程A,
监听键盘按键是线程B,当线程B监听到用户按下"W"时就终止线程A并输出数据.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
genius52t
2013-02-17 · TA获得超过197个赞
知道答主
回答量:142
采纳率:0%
帮助的人:50.8万
展开全部
主线程

while(bPress){
i++;
sleep(1000);

}
printf(i)

起一个监控线程
while(1)
{

ch=getch();

if (ch=='W')
{
bPress = false;

break; //等于大写W 立即跳出while
}

};
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式