Ctrl 组合键的ASCII码值的浅析

您所在的位置:网站首页 ascii码2对应的是哪个字符 Ctrl 组合键的ASCII码值的浅析

Ctrl 组合键的ASCII码值的浅析

2024-07-02 05:46| 来源: 网络整理| 查看: 265

  最近在字符串处理习题中发现需要以Ctrl+Z作为结束标识符来判定字符串输入完毕,查询ASCII码表没有找到组合键的ASCII码值,一时间不知如何处理,查阅了网上一些理论之后,稍有理解,并在处理过程中产生了新的疑问,总结如下。

  ASCII码值1~26被设定为Ctrl+A~Z组合键的ASCII码值,也就是说,我们可以通过判断c==1~26来判断输入的是否是组合键Ctrl+A~Z ,可以通过下面这个测试程序来证实这个说法:

#include #include int main() { char c; while(c=getch()) printf("%c : %d\n",c,c); return 0; }

从键盘依次输入Ctrl+A~Z,得到以下结果:

   产生了新的问题,我们再用%c输出对应的Ctrl+A~Z组合键的时候,输出各种各样的奇怪的字符,找到如下完整的ASCII码表:

   仅看第一张ASCII码表的话,会发现在非打印控制字符ASCII码表中,0-31都被赋给了很多组合键,而不仅仅是Ctrl+A~Z,同时很多好玩的字符也共用这些ASCII码值,并且,0-31的ASCII码值最重要的意义是实现“控制字符”的功能,也就是说,0-31的ASCII码值可以代表三种含义:1、字符 2、组合键Ctrl+ 3、非打印控制字符

  作为字符没有疑问,但是某些组合键,譬如Ctrl+Z,Ctrl+C是有控制字符的意义的,在DOS环境下,Ctrl+Z代表输入一个EOF,那么在使用c=getchar()判断的时候如何判定c表示输入了一个Ctrl+Z还是EOF呢?

          个人粗浅认为,在字符串的末尾输入Ctrl+Z,则会被系统判定为Ctrl+Z的ASCII码值,即26,而输入一个回车之后再输入Ctrl+Z,则会被系统判定为EOF,也就是说,控制符需要在前面存在回车符或者其他控制字符(亦或者无字符)时才会被判定,但是Ctrl+C为强制结束控制符,所以在程序运行的任何位置,输入Ctrl+C都将强制结束程序(类似Alt+F4的功能),通过下面一个例子说明:

#include int main() { char c; while(1) { c=getchar(); printf("%c :%d\n",c,c); } return 0;  }

如图,输入ryan^Z  (^Z表示Ctrl+Z)后,被程序解析为

r :114

y:121

a:97

n:110

→:26

也就是说Ctrl+Z被解析为Ascii码值为26的字符(正如前表所示),再输入一个回车(Ascii码值为10)后,再次输入Ctrl+Z,却被系统解析为EOF(-1),当然,对于其内在的实现机制个人理解并不到位,如果高见,还请不吝赐教。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3