!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(); }