0
点赞
收藏
分享

微信扫一扫

【006】初识字符串

倪雅各 2022-06-10 阅读 94


用双引号(Double Quote)引起来的一串字符串字面值(String Literal),或者简称字符串。

例如:​​"boy"​​   ​​"123"​​   ​​"abc123"​​   ​​"51CTO"​​   ​​"51CTO博客"​


字符串默认在结尾的位置隐藏了一个​​\0​​​的字符,​​\0​​占用一个字符的位置,但​并不会算在字符串的长度里。(比如:char arr[5]存储字符串的话,字符串中最多可以存放4个字符,需要留一个字符位置存放​​\0​​)

#include<stdio.h>
#include<string.h>

int main(){
char test[20] = "admin123";
printf("%s\n",test);
printf("%d\n",strlen(test));
return 0;
}

【006】初识字符串_C语言笔记

上面使用了string.h中提供的strlen函数来计算字符串的长度。


【注意】字符串的结束标志是一个​​\0​​的转义字符。在计算字符串长度的时候​​\0​​是结束标志,不算作字符串内容。

#include<stdio.h>
#include<string.h>

int main(){
char test[20] = "admin\0admin";
printf("%s\n",test);
printf("%d\n",strlen(test));
return 0;
}

【006】初识字符串_C语言笔记_02

通过图片可以看出,在字符串中遇到​​\0​​​就会结束字符串。输出​​\0​​​之前的字符串,输出​​\0​​之前字符串的长度。


当然,在字符串中包含\0的情况下,也可能不是结束的含义。例如:八进制。(转义字符八进制最多三位,包含0开头。转义字符的情况下可以不使用0开头)

【006】初识字符串_C语言笔记_03

上图中,​​\052​​​被看成了一个字符,即输出的​​*​​字符。(具体参考ASCII码表)


不使用​​\0​​开头的八进制。

【006】初识字符串_C语言笔记_04

上图中,​​\152​​​被看成了一个字符,即输出的​​j​​字符。


如果遇到​​\18​​这种情况,只需要将​​\1​​看作八进制,8作为一个字符计算和输出。

【006】初识字符串_C语言笔记_05


在字符串中表示八进制转义字符最少需要一位数字,最多三位数字。

举例:

\1
\2
\01
\001
\101
\512


十六进制转义字符在字符串中最少需要一个数字,最多需要两位数字,且以​​\x​​开头。(十六进制的数字为:0~9,a,b,c,d,e,f)即表现形式可以为:

\x1
\x01
\x10
\xab
\xa1
\x1a

当然,如果是自己写不推荐​​\x1​​这种写法,可以试着写成​​\x01​​,效果一样。

举报

相关推荐

0 条评论