1 _khbit()函数
_kbbit()函数的作用是检查控制台窗口的按键是否被按下。其格式为
int _kbhit( void );
如果在调用该函数时,有按键被按下,则返回一个非零值,否则该函数的返回值是0。需要注意的是,该函数是一个非阻塞函数,不管有没有按键被按下,该函数都会立即返回。_khbit()函数一般与_getch()函数与getche()函数组合使用获取按键信息。
2 _getch()函数
_getch()函数的作用是从控制台中获取输入的字符,在获取输入的字符之后,并不会在控制台中显示该字符。该函数的格式为
int _getch( void );
该函数的返回值是获取到的字符值。需要注意的是,_getch()函数是一个阻塞函数,直到有字符输入时才会返回,所以该函数不会返回错误值。
_khbit()函数和_getch()函数都是在conio.h头文件中定义。
3 _khbit()函数和_getch()函数组合使用
while (!_kbhit())
{
printf("Hit me! ");
Sleep(1000);
}
printf("\nKey struck was '%c'\n", _getch());
在以上代码中,当没有按键被按下时,_kbhit()函数的返回值是0,所以while()语句会循环显示“Hit me!”信息。一旦有按键被按下,此时_kbhit()函数的返回值是非零,之后通过_getch()函数获取按键信息,并显示。图1是代码运行的效果。
图1 代码运行效果
4 _getch()函数、_getche()函数和getchar()函数的关系
在“2 _getch()函数”中提到,_getch()函数的作用是获取按键信息,且该函数在conio.h中定义。_getche()函数与_getch()函数函数类似,其作用也是获取按键信息,并且也是在conio.h中定义。不同之处在于,_getch()函数不会在控制台中显示按键信息,而_getche()函数会在控制台中显示按键信息。
getchar()函数的作用也是获取按键信息,该函数在stdio.h中定义。_getch()函数和_getche()函数是直接从键盘上获取按键信息,getchar()函数是从控制台输入缓冲区中获取按键信息,所以只有当按下了回车按键后,getchar()函数才会开始获取。对于getchar()函数使用的详细方法,请参考《C++中getchar()的使用方法》。