C语言中kbhit()函数怎么复位

我写一个程序时需要检测键盘是否被按下,于是用了kbhit()函数实现,可kbhit()的值就变成1了,我需要将kbhit()的值变回0再次使用,有什么办法可以解决?各位大... 我写一个程序时需要检测键盘是否被按下,于是用了kbhit()函数实现,可kbhit()的值就变成1了,我需要将kbhit()的值变回0再次使用,有什么办法可以解决?各位大哥大姐们帮帮忙,感谢了
我第一次调用时按下键盘kbhit()的值变为1,循环之后再调用时我没再按键盘结果kbhit()的值还是为1然后就一直保持1的状态了...
展开
 我来答
听不清啊
高粉答主

推荐于2016-04-15 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
函数简介
函数名:kbhit()(VC++6.0下为_kbhit())
功 能及返回值: 检查当前是否有键盘输入,若有则返回一个非0值,否则返回0。当调用kbhit()函数检测后,它的状态会自动复位。即重新进入检测状态而不会保留上一次的检测结果的。
用 法:int kbhit(void);
包含头文件: include <conio.h>

程序示例
下面的代码,如果没有键盘输入程序一直输出A,直到用户按Esc结束输出H改为输出B,第二次按Esc时,结束输出B,并输出A和B的个数。这个程序说明kbhit()可以自动复位,重复使用。
#include<stdio.h>
#include<conio.h>
int main(void)
{char ch;
long a=0,b=0;
while(1)
{printf("A");a++;
if(kbhit())
{ch=getch();
if(27==ch)break;
}
}
while(1)
{printf("B");b++;
if(kbhit())
{ch=getch();
if(27==ch)break;
}
}
printf("\nA=%ld B=%ld\n",a,b);
system("pause");
return 0;
}
a1012144015
2015-05-23 · TA获得超过6415个赞
知道大有可为答主
回答量:9038
采纳率:40%
帮助的人:1314万
展开全部
kbhit是非阻塞型的函数,也就是说不会保持状态,只在他被调用的时刻返回值
所以你之后使用它就可以了
他不会一直保持1的状态的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kukumaiwu
2010-05-08 · TA获得超过244个赞
知道小有建树答主
回答量:360
采纳率:0%
帮助的人:286万
展开全部
kbhit是非阻塞型的函数,也就是说不会保持状态,只在他被调用的时刻返回值
所以你之后使用它就可以了
他不会一直保持1的状态的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
甬江观点
高粉答主

2019-08-29 · 理性看世界,从容往前行
甬江观点
采纳数:4418 获赞数:153449

向TA提问 私信TA
展开全部
while(1)
{
    if(kbhit())
    {
        getch();//加上这一句
        //...
    }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式