C语言键盘方向键的读入

当我们做一个程序比如游戏时需要从键盘读入方向键,并且最好读入后不需要按回车且不要显示。下面我们在WIN和LINUX下分别一一实现;

  • 读入方向键;
    在win下,方向键由两个字节组成,分别为:’\244’和
    ‘\72’ up
    ‘\80’ down
    ‘\75’ left
    ‘\77’ right
    所以我们可以读两次来确认一个方向键
char a;
a=getchar();
if(a=='\244')
{
    a=getchar();
    if(a=='\72')
        printf("上\n");
    if(a=='\80')
        printf("下\n");
    if(a=='\75')
        printf("左\n");
    if(a=='\77')
        printf("右\n");
}

而在Linux下,方向键由三个字节组成,分别为:’\033’和’[‘和
‘A’ up
‘B’ down
‘C’ left
‘D’ right
相同的我们可以读三次次来确认一个方向键

char a;
a=getchar();
if(a=='\033')
{
    a=getchar();
    if(a=='[')
    {
        a=getchar();
        if(a=='A')
            printf("上\n");
        if(a=='B')
            printf("下\n");
        if(a=='D')
            printf("左\n");
        if(a=='C')
            printf("右\n");
    }
}
//当然我们也可以使用字符串数组
char a[4];
scanf("%s",a);
if(!strcpy(a,"\033[A"))
    printf("上");
    //。
    //。
    //。
    //。
  • 读入后不需要按回车且不回现
    在win下,我们可以使用conio.h库下的getch()函数读字符,就可以不回显,不用按回车;
    但是在Linux下我们没有conio.h库,也没有类似的函数,所以就得使用一些新操作(还有这种操作?)
    那就是设置Linux终端里设置非正规模式(没错就是有这种操作!)
struct termios stored_settings;
struct termios new_settings;
tcgetattr (0, &stored_settings);// 得到原来的终端属性
new_settings = stored_settings;
new_settings.c_lflag &= (~ICANON);//设置非正规模式,程序每次要从终端读取一个字符的
new_settings.c_cc[VTIME] = 0;//设置非正规模式下的读延时
new_settings.c_cc[VMIN] = 1;// 设置非正规模式下的最小字符数
tcsetattr (0, TCSANOW, &new_settings);// 设置新的终端属性
//然后就可以读取了
char a;
a=getchar();
tcsetattr (0, TCSANOW, &stored_settings);// 恢复默认设置
//读完记得恢复默认设置,不然。。。。。。
  • 8
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值