🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
#### 16. 字符串 在 C 语言中,字符串实际上是使用 **null** 字符 '\\0' 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。 下面的声明和初始化创建了一个 "Hello" 字符串。由于在数组的末尾存储了空字符,所以字符数组的大小比单词 "Hello" 的字符数多一个。 ~~~ char ch[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; ~~~ 也可以使用以下简写模式: ~~~ char ch[6] = "Hello" ~~~ 字符串在 C/C++ 中内存表示: ![](https://user-gold-cdn.xitu.io/2019/12/17/16f13d16d583dc41?imageView2/0/w/1280/h/960/format/webp/ignore-error/1) 其实,您不需要把 *null* 字符放在字符串常量的末尾。C 编译器会在初始化数组时,自动把 '\\0' 放在字符串的末尾。让我们尝试输出上面的字符串: ~~~ void main(){ //定义一个 char 数组 char string[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; //简写 char string2[6] = "Hello"; //%s:输出字符串 printf("string message : %s\n", string); } ~~~ 输出: ~~~ string message : Hello ~~~ C 中对字符串操作的 API | 序号 | 函数 & 目的 | | --- | --- | | 1 | **strcpy(s1, s2);** 复制字符串 s2 到字符串 s1。 | | 2 | **strcat(s1, s2);** 连接字符串 s2 到字符串 s1 的末尾。 | | 3 | **strlen(s1);** 返回字符串 s1 的长度。 | | 4 | **strcmp(s1, s2);** 如果 s1 和 s2 是相同的,则返回 0;如果 s1s2 则返回大于 0。 | | 5 | **strchr(s1, ch);** 返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。 | | 6 | **strstr(s1, s2);** 返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。 | 例子: ~~~ void main(){ //字符串操作 char str1[12] = "Hello"; char str2[12] = "World"; char str3[12]; int len; //将 str1 复制到 str3 strcpy(str3, str1); printf("strcpy (str3,str1) :%s\n", str3); //拼接字符串 str1 + str2 strcat(str1, str2); printf("strcat(str1,str2) :%s\n", str1); //返回字符串的长度 len = strlen(str1); printf("strlen(str1) :%d\n", len); } ~~~ 输出: ~~~ strcpy (str3,str1) :Hello strcat(str1,str2) :HelloWorld strlen(str1) :10 ~~~