游客:  注册 | 登录 | 搜索 | 帮助
3s地带



标题: !kbhit()的意思?
s0rfv0si
疾风
Rank: 4Rank: 4



UID 4237
精华 0
积分 188
帖子 50
现金 178
贡献值 0
阅读权限 40
注册 2007-8-24
!kbhit()的意思?
while(1)
{
while(!kbhit())
m=getch();
if(m==‘s’)
{
break;
}
} 在没键按下和有键下的区别。

顶部
ipkhss
疾风
Rank: 4Rank: 4



UID 3879
精华 0
积分 157
帖子 34
现金 147
贡献值 0
阅读权限 40
注册 2007-8-24
kbhit用来检测键盘是否有按键,有则返回-1,没有则返回0. 如果想知道按下了什么键,应该用getch()来获取(键值已经输入缓冲区,getch从缓冲区中取得而非再从键盘输入). 你给出的程序应该是一个不会正常退出的死循环吧(不管按什么键),因为, while (!kbhit()) m = getch(); getch()会中断等待你从键盘输入,这个输入不会被kbhit检测到(此时中断处理中),而待中断处理完后(输入一个字符后)再转到kbhit,而此时又没有输入马上再次转到getch(). 我给一个我见过的用法:
#include <stdio.h>

void main()
{
char m;
int i = 0;
while (1)
{
while (!kbhit())
{
i++;
if (i == 8)
i = 0;
sound(i);
}
m = getch();
printf("m == %c\n", m);
if (m == 's')
{
nosound();
break;
}
}
getch();
}

参考文献:others

  
顶部
sfx44
强风
Rank: 3



UID 5139
精华 0
积分 141
帖子 39
现金 131
贡献值 0
阅读权限 30
注册 2007-8-24
检测键盘是否有键按下。
如果有键按下,则返回对应键值;否则返回零。
kbhit不等待键盘按键。无论有无按键都会立即返回。

顶部


 
当前时区 GMT+8, 现在时间是 2009-1-9 06:41 清除 Cookies - 联系我们 - 3S地带 - Archiver - WAP - 赣ICP备07006302号
Powered by Discuz! 5.5.0  © Processed in 0.024796 second(s), 6 queries , Gzip enabled