C++语言键盘监听

阻塞式

#include 
#include 
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 
#include 
#include 
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 是“睡眠”的意思,用来让程序暂停执行一段时间,以毫秒记。

你可能感兴趣的:(自主练习,c语言)