C语言每日一练
2021年11月7日
文章目录
题目描述
实现无阻塞读取按键
分析
kbhit()
是一个C和C++函数,用于非阻塞地响应键盘输入事件
,为 “keyboard hit(键盘敲击)”的简写。kbhit
是_kbhit()
的弃用别名,尽管它依然受到支持,微软仍建议使用遵循 C 命名规则的 _kbhit()。
- 函数原型:
int kbhit(void)
- 功能及返回值: 检查当前是否有键盘输入,若有则返回一个非0值,否则返回0。
- C++需要添加头文件: include <conio.h>
- C语言不需包含额外头文件
- 2020.7.9已弃用 kbhit(),需替换为_kbhit()。
- 用法:
int main()
{
while(!kbhit()) //当没有键按下
{
printf(“无键按下\n”);
}
printf(“有键按下\n”);
system(“pause”);
return 0;
}
——百度百科
代码实现
#include <stdio.h>
#include <string.h>
#include <conio.h> //kbhit()/_kbhit()
#include <Windows.h> //Sleep(ms)
int main()
{
char key;
while(1)
{
key = 0;
if(_kbhit()) //检测到按键按下
key = getch(); //读取按键
if(key != 0 && key != '\r') //按键有效
printf("按下的按键:%c\n", key);//打印按键
if(key == '\r') //按下回车
{
printf("程序结束运行\n"); //退出
return 0;
}
/* 功能区 */
printf("请按下一个按键\n"); //提示
Sleep(100);
}
return 0;
}
运行结果
在不影响打印的情况下识别按键(Sleep延时不能太大,否则按键按快了会识别失灵)