Ctrl 组合键的ASCII码值的浅析 |
您所在的位置:网站首页 › ascii码2对应的是哪个字符 › Ctrl 组合键的ASCII码值的浅析 |
最近在字符串处理习题中发现需要以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 |