当前位置: 技术问答>linux和unix
关于键盘上的按键占几个字符
来源: 互联网 发布时间:2016-12-02
本文导语: 本帖最后由 laojing123 于 2011-05-25 09:50:15 编辑 如题,当输入普通的字符,如a ~ z, A ~ Z,0 ~9 等可打印字符,可以确定是占一个字符。 但是当输入向 “home” "向上" “向下” 等编辑键的时候要占几个字符呢, ...
但是当输入向 “home” "向上" “向下” 等编辑键的时候要占几个字符呢,
查ASCII码表上讲 “向上”键的ASCII码为38,怎么只占一个字节呢??
并且打出来38对应的字符为'&'
还有,我写了个程序来判断按键所占字节数
10 char string[64];
11 memset(string, 0, 64);
12 printf("please input a string:");
13 //scanf("%s", string);
14 fgets(string, 64, stdin);
15 printf("length: %d", strlen(string));
16 printf("n");
运行结果为
please input a string:^[[A
length: 4
上面是输入了一个“向上”键
也就是说该键占了3个字节
有大侠可以解释下吗?
|
任何键盘字符 都只占一个字节
我这边测试也是一个字节啊。
我这边测试也是一个字节啊。
|
终端模式的问题吧
按“向上”,等价于依次按了3个键,ESC [ A
按“向上”,等价于依次按了3个键,ESC [ A
|
运行结果为
please input a string:^[[A
length: 4
自己看看终端输出是几个字符。
^[[A这是几个字符。^[是一个字符。
please input a string:^[[A
length: 4
自己看看终端输出是几个字符。
^[[A这是几个字符。^[是一个字符。
|
不知道这些算不算是“转义序列”,我也迷惑了很久。
经测试,按向上键,楼主的程序打印出来的字符是:
1b 5b 41 a
分别是
^[、[、A和换行(换行不算),其中“^[”为转义字符。
经测试,按向上键,楼主的程序打印出来的字符是:
1b 5b 41 a
分别是
^[、[、A和换行(换行不算),其中“^[”为转义字符。