ASCII码,字符,字符串三者之间的关系 | 您所在的位置:网站首页 › 字符与符号的区别 › ASCII码,字符,字符串三者之间的关系 |
程序调试中遇到问题: 在使用sprintf 函数,在转换字符串时,如果遇到0时,会自动认为是结束标志,0以后的内容不会被添加进来。 复习一下字符串: 一. ASCII码是什么? ASCII 全称为 ( American Standard Code for Information Interchange),简单的说,就是用 7 位二进制去编码我们生活中常见的数字,大小写字母,标点符号以及一些特殊的控制字符,如下: 数字:0 , 1 , 2 , 3 ... 9 字母:a , b , c ...z , A , B , C ... Z 标点符号以及运算符:,. + - ... 控制字符:回车,换行等控制字符 ASCII 编码表部分截图如下 : ![]() 在 上述 ASCII 编码表里的第 5 列,都可称之为字符。 字符又分为: 控制字符或者通信专用字符 ( 0 ~ 31以及127) 可显示字符 ( 32 ~ 126 ) 使用示例因此如果我们想要显示这些字符,我们只需要在存储其对应的编码值 ( 一般使用 16 进制,或者 10 进制),然后通过 printf 格式化输出得到我们想要的字符 #include intmain(){charc1=0x48;//存储其十六进制 unsignedcharc2='e';//直接存储字符,但是本质上也是存储了其对应的编码值 shortc3=108;//存进十进制 intc4=108;//存进十进制 longc5=0157;//存进八进制 longlongc6='!';//同上 longlongc7='\r';//同上 longlongc8='\n';//同上 printf("%c",c1);printf("%c",c2);printf("%c",c3);printf("%c",c4);printf("%c",c5);printf("%c",c6);printf("%c",c7);printf("%c",c8);} 运行结果 Hello!从上面可以看出,上述的数据类型都可以使用,但是通常我们都用 char 来存储,因为他占用的内存大小刚好合适,不会浪费内存。 思考:为什么不用 unsigned char? 三. 字符串从上面的编码过程 我们就可以看出来,一个个储存过于麻烦,因此我们就可以用字符串进行存储 ,但是在c语言中没有字符串数据类型 ( string ),因此声明一个字符类型数组,或者无符号类型数组来存储字符串。 使用示例 #include #include intmain(){unsignedcharstr1[]="Hello unsigned char!\r\n";//字符串 printf("%s",str1);charstr2[]="Hello char!\r\n";printf("%s",str2);} 运行结果 Hellounsignedchar!Hellochar! 思考字符和字符串的区别相同点 字符和字符串都可以用 char 和 unsigned char 数据类型进行存储 不同点 字符也可以用 整型类型 存储,但是字符串只能用 unsigned char 或 char 数据类型数组进行存储 字符存储时使用单引号 ' ' , 字符串使用双引号 “ ” 字符的格式化输出符号为 %c , 字符串的格式化输出符号为 %s 存单个字符时,字符占用1个字节,字符串占用两个字节,因为字符串总是以 '\0' 结尾,且\0 也占用一个内存空间 如何将字符数组按字符串输出将字符存在字符类型的数组中,进行字符串的格式化输出。 #include #include intmain(){charstr1[]="Hello\r\n\0 world!";printf("%s",str1);charstr2[]={'H','e','l','l','o','\r','\n','\0','w','o','r','l','d'};printf("%s",str2);charstr3='H';printf("the size of str3 is %d\r\n",sizeof(str3));charstr4[]="H";printf("the size of str4 is %d\r\n",sizeof(str4));charstr5[]="He";printf("the size of str5 is %d\r\n",sizeof(str5));} 运行结果 HelloHellothesizeof'H'is1thesizeof"H"is2thesizeof"He"is3 总结str1 中出现 \0 ,此时字符串输出结束,所以输出 Hello str2 中出现 \0 ,此时字符串输出结束,所以输出 Hello 字符串结尾是 \0 ,也占用一个存储空间 |
CopyRight 2018-2019 实验室设备网 版权所有 |