kbhit()函数

来源:互联网 发布:能加盟的网络拉货平台 编辑:程序博客网 时间:2024/06/06 07:46
函数简介
  函数名:kbhit()(VC++6.0下为_kbhit())
  功 能及返回值: 检查当前是否有键盘输入,若有则返回一个非0值,否则返回0
  用 法:int kbhit(void);
  包含头文件: include <conio.h>

程序示例
C语言
  #include<conio.h>
  int main(void)
  {
  cprintf("Press any key to continue:");
  while (!kbhit()) /* do nothing */ ;
  cprintf("\r\nA key was pressed...\r\n");
  return 0;
  }
  下面的代码,如果没有键盘输入程序一直输出Hello World,直到用户按Esc结束
  #include <conio.h>
  #include <stdlib.h>
  int main( void )
  {
  char ch;
  while( !kbhit() )
  {
  cprintf("Hello World\n");
  if( kbhit() )
  {
  ch = getch();
  if( 27 == ch )
  break;
  }
  }
  cprintf("End!\n");
  system("pause");
  return 0;
  }

C++语言
  #include <conio.h>
  #include <iostream>
  using namespace std;
  int main()
  {
  while(!kbhit()) //当没有键按下
  {
  cout<<"无键按下"<<endl;
  }
  cout<<"有键按下"<<endl; //有键按下时输出这
  system("pause");
  }
  kbhit() 在执行时,检测是否有按键按下,有按下返回非0值,一般是1
  没有按下返回0;是非阻塞函数
  getch() 在执行时,检测按下什么键,如果不按键该函数不返回;是阻塞函数
  
类似地
  在Tc2.0中有一个处理键盘输入的函数bioskey();
  int bioskey(int cmd);
  当cmd为1时,bioskey()检测是否有键按下。没有键按下时返回0;有键按下时返回按键码(
  任何按键码都不为0),但此时并不将检测到的按键码从键盘缓冲队列中清除。 是非阻塞参数。
  当cmd为0时,bioskey()返回键盘缓冲队列中的按键码,并将此按键码从键盘缓冲队列中清
  除。如果键盘缓冲队列为空,则一直等到有键按下,才将得到的按键码返回。是阻塞调用。
  //个人理解kbhit()有点像bioskey(1)