- !kbhit()的意思?while(1){while(!kbhi
- while(1)
{
while(!kbh())
m=getch();
if(m==‘s’)
{
break;
}
} 在没键按下和有键下的区别。
- kbhit用来检测是否有按键,有则返回-1,没有则返回0. 如果想知道按下了什么键,应该用getch()来获取(键值已经输入缓冲区,getch从缓冲区中取得而非再从键盘输入). 你给出的程序应该是一个不会正常退出的死循环吧(不管按什么键),因为, while (!kbhit()) m = getch(); getch()会中断等待你从键盘输入,这个输入不会被kbhit检测到(此时中断处理中),而待中断处理完后(输入一个字符后)再转到kbhit,而此时又没有输入马上再次转到getch(). 我给一个我见过的用法:
#include
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();
}