C语言每日一练——第55天:实现无阻塞读取按键

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延时不能太大,否则按键按快了会识别失灵)

C语言每日一练——第55天:实现无阻塞读取按键

上一篇:1850984: Fix: crash when running am.jar without parameters


下一篇:55、数据库高并发是我们经常会遇到的,你有什么好的解决方案吗?