详解ASCI I 编码及C语言如何显示ASCI I 码字符
ASCI I 编码表主要是字符的编码,一共编码了128个字符,其中33个控制字符,95个可显示字符。
- 33个控制字符包含ASCII值0 - 31(含水平制表符,垂直制表符,换页,换行)、127(删除),共33个不可显示字符。
- 95个可显示字符包含ASCII值32 - 126共95个可显示字符。其中包含10个数字字符,52个字母,33个为标点符号和运算符号(含空格)。
33个控制字符多数都已是陈废的控制字符,其用途主要是用来操控已经处理过的文字。虽然在大多数情况下,ASCII码值为0 - 31之间的字符不可显示,但根据所使用的操作系统不同,在某些DOS模式下可显示诸如笑脸、扑克牌花色等符号。
实现显示128个ASCII 码字符的C语言程序如下所示:
#include <stdio.h>
int main(void)
{int i;for(i = 0; i <= 127; i++){printf("%5c", i); //打印一个ASCII字符if(i % 16 == 0) printf("\n"); //每打印16个字符换行}return 0;
}
输出如下图所示:
可以看出来, 前32个字符都没有显示出来。
- ASCII码值为13(0x0D)的控制字符是CR(回车),因此第一行实际上只输出了码值为0 - 12的字符(共13个)。第二行输出的三个字符是ASCII码值为14 - 16的字符;
- 第三行最后一个字符是ASCII码值为32(0x20)的字符,是Space(空格),因此屏幕上看不到字符;
- ASCII码值33 - 126的字符都是可显示的英文字母、数字、标点符号和运算符
- 最后一个字符是ASCII码值为127(0x7f)的字符,是DEL(删除),也属于控制字符
关于C语言中char类型变量的取值范围的讨论:
C语言中char类型变量的占1个字节的空间,取值范围为 -128 ~ 127。在编程时一定要注意各种变量取值范围,忽视边界情况可能会导致代码出现死循环或者其他异常。
举例说明,将上面代码中的int i换成char ch:
#include <stdio.h>
int main(void)
{char ch;for(ch = 0; ch <= 127; ch++){printf("%5c", ch); //打印一个ASCII字符if(ch % 16 == 0) printf("\n"); //每打印16个字符换行}return 0;
}
当ch达到最大值127(0x7f)后,再增1就变成了-128(0x80),而关系表达式 -128 <= 127 为真,因此for循环不会终止,将继续运行下去;再继续增1,ch值变为 -127(0x81),关系表达式 -127 <= 127 为真,for循环继续。。。以此类推,for循环将永远不会结束。
是什么原因导致这段看上去很正常的代码出现死循环呢?原因就是编程时没有关注char类型变量的取值范围为 -128 ~ 127,这使得关系表达式 ch <= 127 永远为真,循环当然无法终止啦。
详解ASCI I 编码及C语言如何显示ASCI I 码字符相关推荐
- Unicode编码详解(二):编码预备知识
Unicode编码详解(二):编码预备知识 本文为原创文章,转载请注明出处,或注明转载自"黄邦勇帅(原名:黄勇) 本文是对<C++语法详解>一书相关章节的增补,以增强读者对字符的 ...
- php carbon详解,详解PHP使用日期时间处理器Carbon人性化显示时间
详解PHP使用日期时间处理器Carbon人性化显示时间 本文介绍了PHP使用日期时间处理器Carbon人性化显示时间,分享给大家,具体如下: 可以通过 Composer 很方便的来安装 Carbon ...
- Linux_arm_启动_c语言部分详解,[原创]Linux arm 启动 c语言部分详解第四讲
Linux arm启动c语言部分详解第四讲(from setup_per_cpu_areas();) Written by leeming 上面的setup_arch花了我们大量的篇幅,现在我们要继续 ...
- c语言的指针详解ppt,最全的C语言指针详解.ppt
最全的C语言指针详解.ppt 第6章 指针,6.1 指针定义与使用 6.2 指针与函数 6.3 指针与数组 6.4 指针与字符串 6.5 指针数组与多级指针 6.6 指针与动态内存分配 6.7 指针的 ...
- 详解one—hot编码(独热编码)
学习过程中遇到的优质的博文,怕丢了所以转载一下 转载自:https://www.cnblogs.com/shuaishuaidefeizhu/p/11269257.html 一.什么是one-hot编 ...
- JPG文件编解码详解——详细介绍编码和解码JPG
http://blog.csdn.net/zhengzhoudaxue2/article/details/7693258 JPEG文件编/解码详解 cat_ng 猫猫 JPEG(Joint Photo ...
- C语言字符串库函数详解模拟实现(strlen、strcpy、strcat、strcmp)+字符操作函数+字符转换函数
字符串库函数详解 一.无字符串长度限制的字符串函数 1. strlen 计算字符串长度函数 2. strcpy 字符串拷贝函数 3. strcat 字符串追加函数 4. strcmp 字符串比较函数 ...
- Java版人脸检测详解下篇:编码
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 如果您看过<三分钟极速体验:Java版 ...
- java servlet dao_Java+MyEclipse+Tomcat 详解Servlet和DAO数据库增删改查操作(源码)
[实例简介] 该资源主要参考自己的博客http://blog.csdn.net/eastmount/article/details/45936121 讲诉Java+MyEclipse+Tomcat 详 ...
最新文章
- java日志和SLF4J随想
- 【学术相关】研究生哪些行为可以在导师那超加分?你做到了吗?
- 虚拟局域网vlan实验报告_自动化已非原来的自动化:看虚拟局域网技术应用到罗克韦尔的DCS...
- springboot+mybatis实现动态切换数据源
- html5shiv主要解决IE6-8 无法识别HTML5的新标签,父节点不能包裹子元素,以及应用CSS样式...
- 算法的概念与伪代码的使用
- matlab与c 接口与混合编程,Matlab与C/C++混合编程接口及应用方法解析
- eclipse spring mysql_为Eclipse上的Maven project添加SpringMVC和Mybatis以实现数据库
- Linux ubuntu 切换阿里更新源
- Windows XP Home Edition安裝 IIS 的方法
- Console-算法[for]-素数
- html5 天地图,天地图API
- ts16949 软件开发流程图_新产品开发流程图:包括APQP,DFMEA,PFMEA,PPAP(FAI),SPC,MSA(GRR)等...
- android 蓝牙读取数据格式,解析Android蓝牙数据包
- 华为od德科面试数据算法真题解析-专栏必看-
- 网站服务器记录攻击日志ctf,通过网站日志分析sql注入攻击的痕迹
- STM32的ADC多通道采集的实现
- python增加一列数据_使用Python向DataFrame中指定位置添加一列或多列的方法
- android美拍sd卡,AI美拍,智慧四摄;小i也有大不同
- 微信小程序之头部选项卡和左侧选项卡