C++语言键盘监听

阻塞式

#include <stdio.h>
#include <conio.h>
int main(){
    char ch;
    int i = 0;
    //循环监听,直到按Esc键退出
    while(ch = getch()){
        if(ch == 27){
            break;
        }
        else{
            printf("Number: %d\n", ++i);
        }
    }
    return 0;
}
运行结果:
Number: 1  //按下任意键
Number: 2  //按下任意键[按住]
Number: 3
Number: 4  //[松开]
Number: 5  //按下Esc键

使用conio.h头文件中的kbhit函数可以实现非阻塞式键盘监听。

非阻塞式

#include <stdio.h>
#include <windows.h>
#include <conio.h>
int main(){
    char ch;
    int i = 0;
    //循环监听,直到按Esc键退出
    while(1){        
        if(kbhit()){            
            ch = getch();            
            if(ch == 27){                
                break;            
            }        
        }        
        printf("Number: %d\n", ++i);        
        Sleep(100);  
        //暂停0.1秒    
    }    
    return 0;
}
Number: 1
Number: 2
Number: 3
Number: 4
Number: 5  //按下Esc键

每次循环,kbhit 会检测用户是否按下某个键(也就是检测缓冲区中是否有字符)

没有的话继续执行后面的语句

有的话就通过 getch 读取,并判断是否是 Esc,是的话就退出循环,否则继续循环。

Sleep 是“睡眠”的意思,用来让程序暂停执行一段时间,以毫秒记。

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值