C语言中kbhit()函数怎么复位
我写一个程序时需要检测键盘是否被按下,于是用了kbhit()函数实现,可kbhit()的值就变成1了,我需要将kbhit()的值变回0再次使用,有什么办法可以解决?各位大...
我写一个程序时需要检测键盘是否被按下,于是用了kbhit()函数实现,可kbhit()的值就变成1了,我需要将kbhit()的值变回0再次使用,有什么办法可以解决?各位大哥大姐们帮帮忙,感谢了
我第一次调用时按下键盘kbhit()的值变为1,循环之后再调用时我没再按键盘结果kbhit()的值还是为1然后就一直保持1的状态了... 展开
我第一次调用时按下键盘kbhit()的值变为1,循环之后再调用时我没再按键盘结果kbhit()的值还是为1然后就一直保持1的状态了... 展开
4个回答
展开全部
函数简介
函数名: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;
}
函数名: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;
}
展开全部
kbhit是非阻塞型的函数,也就是说不会保持状态,只在他被调用的时刻返回值
所以你之后使用它就可以了
他不会一直保持1的状态的
所以你之后使用它就可以了
他不会一直保持1的状态的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
kbhit是非阻塞型的函数,也就是说不会保持状态,只在他被调用的时刻返回值
所以你之后使用它就可以了
他不会一直保持1的状态的
所以你之后使用它就可以了
他不会一直保持1的状态的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
while(1)
{
if(kbhit())
{
getch();//加上这一句
//...
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询