C++中_kbhit()函数与_getch()函数

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()的使用方法》

  • 80
    点赞
  • 229
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
在 Dev-C++ 编译器,如果使用 `getch()` 函数来等待用户输入,程序会一直等待用户的输入,直到用户按下一个键为止。如果用户在一定时间内没有按下任何键,程序就会继续执行。 如果你想在一定时间内等待用户的输入,可以使用 `kbhit()` 函数来检测是否有键盘输入。该函数位于 `conio.h` 头文件,需要在程序包含该头文件才能使用。 以下是一个示例代码,可以演示如何使用 `kbhit()` 函数来检测是否有键盘输入: ```c++ #include <stdio.h> #include <conio.h> #include <time.h> int main() { int i = 0; clock_t start = clock(); // 获取程序开始时间 printf("Press any key within 5 seconds...\n"); while (i < 5) { // 循环等待用户输入,最多等待 5 秒钟 if (kbhit()) { // 检测是否有键盘输入 getch(); // 获取用户输入的键值 printf("You pressed a key!\n"); break; // 结束循环 } if ((clock() - start) / CLOCKS_PER_SEC > 1) { // 如果超过 1 秒钟 printf("%d second(s) passed...\n", i + 1); i++; // 计时器加 1 start = clock(); // 重新计时 } } if (i == 5) { // 如果超过 5 秒钟 printf("Time out!\n"); } return 0; } ``` 在上面的示例代码,程序会循环等待用户输入,最多等待 5 秒钟。每隔 1 秒钟会输出一次计时器的值,提示用户还剩下多少时间。如果用户在规定时间内按下键,程序会输出 "You pressed a key!";如果超过规定时间,程序会输出 "Time out!"。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值