Logo
Section 1 / 5

字符串

学习如何声明字符串以及C语言如何处理它们。

导入

字符串

学习如何声明字符串以及C语言如何处理它们。

字符串是编程中最常用的数据类型之一。老实说,在C语言中处理字符字符串略显麻烦,尤其是与Python等语言相比时。

由一组字符组合而成的集合称为字符串。我们之前已经了解过,常量字符串用双引号括起来,而字符常量则使用单引号声明。

在C语言中,字符串实际上在底层就是一个字符数组。字符串变量的声明方式如下面第5行所示。方括号表示数组。和数组一样,我们可以通过索引访问字符串中的元素。

1#include <stdio.h> 2 3int main(void) { 4 char c = 'p'; // 一个字符 5 char s[] = "Paul"; // 一个字符串 6 printf("c = %c and s = %s\n", c, s); 7 return 0; 8}

空终止

关于字符串需要记住的一点是:它们始终是空终止的。这意味着字符数组的最后一个元素是一个空字符,写作 '\0'。当我们像下面第4行那样声明字符串时,无需手动添加这个空终止符,编译器会自动为我们完成。我们可以使用 sizeof 函数来查看上面这个字符字符串的实际长度:

1#include <stdio.h> 2 3int main(void) { 4 char s[] = "Paul"; 5 printf("s 是 %ld 个元素长\n", sizeof(s)); 6 return 0; 7}

修改字符串

在C语言中,修改已声明的字符串有些棘手。一旦字符串被声明并确定了长度,就不能通过重新赋值一个新常量来直接改变它的长度。

不过,由于字符串本质上是字符数组,我们可以直接修改其内容。

1char s[] = "String"; 2s[3] = 'o';

此时,s 的值将变为 Strong 而不再是 String。

我们无法改变数组的长度,但可以通过将字符串中的某个字符替换为 null 字符(\0)来“缩短”字符串,从而终止字符串。这样一来,实际上我们就得到了一个较短的字符串存放在一个较长的数组中,但这没有问题,因为我们知道字符串的结束位置在哪里(即 null 字符的位置)。

1#include <stdio.h> 2 3int main(void) { 4 char s[] = "This is a string"; 5 printf("原始字符串: %s\n", s); 6 7 // 修改字符串内容 8 s[2] = 'a'; 9 s[3] = 't'; 10 printf("修改后的字符串: %s\n", s); 11 12 // 缩短字符串 13 s[7] = '\0'; 14 printf("缩短后的字符串: %s\n", s); 15 16 return 0; 17}

综上所述,在C语言中,字符串本质上就是以空字符结尾的字符数组。

接下来,我们将学习可以对字符串执行的各种函数操作。

C 语言中的指针

使用C标准库处理字符串