C 语言字符串2025 年 6 月 12 日 | 阅读 10 分钟 在 C 语言编程中,字符串可以定义为以空字符 ('\0') 终止的一维字符数组。字符数组或字符串用于操作文本,例如单词或句子。数组中的每个字符占用一个字节的内存,最后一个字符必须始终为 0。 终止字符 ('\0') 在字符串中很重要,因为它是识别字符串结束的唯一方式。当我们定义一个字符串为 char s[10] 时,字符 s[10] 在内存中会被隐式地用空字符初始化。在 C 语言编程中,'%s' 用作字符串的格式说明符。 声明在 C 语言编程中,字符串的声明就像声明一个字符类型的一维数组一样简单。以下是声明字符串的语法。 在给定语法中,
在 C 语言中有两种声明字符串的方式。
使用字符数组让我们看看在 C 语言中通过字符数组声明字符串的例子。 我们知道,数组索引从 0 开始,因此它将如下图所示。 ![]() 在声明字符串时,大小不是强制性的。因此,我们可以将上面的代码写成如下所示。 使用字符串字面量我们也可以在 C 语言中通过字符串字面量来定义字符串。例如: 在这种情况下,编译器会在字符串的末尾追加 '\0'。 初始化我们可以通过字符列表或字符串字面量来初始化字符串。 C 字符串示例让我们看一个简单的例子来说明 C 语言中的字符串。 示例编译并运行输出 Char Array Value is: tpointtech String Literal Value is: tpointtech 说明 在此示例中,我们演示了在 C 语言中初始化和打印字符数组(字符串)的两种方法。之后,数组 ch 使用单个字符(包括空终止符 '\0')进行初始化,而 ch2 使用字符串字面量。两者都使用 %s 打印,显示相同的输出:“tpointtech”。 访问元素在 C 语言中,我们可以通过给出字符的位置来引用字符串中的任何字符,类似于 数组。我们在方括号 [] 中给出索引和字符串名称。 C 字符串访问元素示例 让我们举一个例子来说明如何在 C 字符串中访问元素。 示例编译并运行输出 t c 说明 在此示例中,我们定义了一个字符串为“TpointTech”的字符数组,并打印特定位置的字符。由于 C 语言中的数组是零索引的,string[5] 读取第六个字符 't',string[8] 读取第九个字符 'c',两者都打印在不同的行上。第三次访问 string[10] 读取空终止符 '\0',它表示字符串的结束,并且不打印任何可见内容。因此,结果包括字符 't' 和 'c',每行一个。 更新元素在 C 语言中,也可以更新字符串中的字符。它允许我们使用该字符的索引来更新任何字符串字符。 C 字符串更新元素示例 让我们举一个例子来说明如何在 C 字符串中更新元素。 示例编译并运行输出 Before updating of string: TPointTech After updating the string: tpointtech 说明 在此示例中,我们从字符串“TPointTech”创建一个字符数组并将其打印。之后,代码修改了数组中的一些字符:string[0] 设置为 't',string[1] 设置为 'p',string[6] 设置为 't'。修改后,将打印新字符串。因此,输出将显示原始字符串,后跟修改后的字符串“tpointtech”。 字符串长度在 C 语言中,我们必须遍历到空字符 ('\0') 才能确定字符串的长度。C 标准库中的 strlen() 函数主要用于查找字符串长度。 C 字符串长度示例 让我们举一个例子来说明如何在 C 字符串中查找字符串长度。 示例编译并运行输出 Length of the string is: 10 说明 在此示例中,我们声明了一个字符串为“TpointTech”的字符数组,并使用 string.h 库中的 strlen 函数计算其长度,该函数返回字符数。之后,它打印长度,即 10。 遍历字符串在 C 语言中,字符串遍历是任何编程语言中最重要的方面之一。我们可能需要操作非常大的文本,这可以通过遍历文本来完成。遍历字符串与遍历整数数组有所不同。我们需要知道数组的长度才能遍历整数数组,而我们可以使用字符串中的空字符来识别字符串的结束并终止循环。 因此,有两种遍历字符串的方式。
让我们讨论它们中的每一个。 使用字符串的长度让我们看一个计算字符串中元音字母数量的例子。 示例编译并运行输出 The number of vowels 4 使用空字符让我们看一个使用空字符计算元音字母数量的相同例子。 示例编译并运行输出 The number of vowels 4 接受字符串作为输入在 C 语言中,我们使用 scanf 来接受用户的输入。然而,它也可以用于字符串,但场景不同。考虑以下代码,它在遇到空格时存储字符串。 C 语言接受字符串作为输入的示例让我们举一个例子来说明如何在 C 语言中接受字符串作为输入。 示例编译并运行输出 Enter the string: Hello TpointTech You entered Hello 从输出可以看出,以上代码不适用于带有空格的字符串。为了使此代码适用于带有空格的字符串,scanf 函数需要进行细微更改,即,我们必须编写:scanf("%[^\n]s",s) 而不是 scanf("%s",s),这会指示编译器在遇到换行符 (\n) 时存储字符串 s。让我们考虑以下示例来存储带空格的字符串。 示例编译并运行输出 Enter the string: Hello TpointTech You entered Hello TpointTech 说明 在这里,我们还必须注意,在 scanf 中存储字符串时不需要使用地址 (&) 运算符,因为字符串 s 是一个字符数组,并且数组的名称,即 s,表示字符串(字符数组)的基地址。因此,我们不需要使用它。 使用 fgets()如果我们要读取整个字符串,包括空格,我们需要使用 fgets() 函数。与 scanf() 不同,fgets() 会读取整行,包括空格,直到找到换行符。 使用 fgets() 的 C 字符串示例 让我们举一个例子来说明 C 字符串中的 fgets() 函数。 示例编译并运行输出 Enter a string: TpointTech You entered: TpointTech 说明 在此示例中,我们使用 fgets() 读取整行输入(包括空格)到字符数组 str 中。它要求用户输入一个字符串,安全地存储多达 99 个字符,然后打印输入的字符串。fgets() 函数比 scanf("%s", ...) 更适合,因为它读取空格并避免缓冲区溢出。如果缓冲区中有空间,输入可能包含换行符。 一些要点 然而,在使用 scanf 输入字符串时,必须注意以下几点。
使用 puts() 和 fputs() 函数在 C 语言中,我们使用带有 %s 说明符的 printf() 函数来显示字符串。我们可以使用 puts() 函数(在 C11 和 C17 版本中已移除)或 fputs() 函数作为替代。 示例编译并运行输出 Using puts(): Hello from TpointTech! Using fputs(): Hello from TpointTech! 说明 在此示例中,我们定义了一个字符串并使用 puts() 和 fputs() 函数打印它。首先,puts("Using puts():") 打印一个标签,然后 puts(str) 打印字符串并具有在末尾插入新行的副作用。之后,printf("Using fputs():\n") 打印另一个带有新行的标签。最后,fputs(str, stdout) 输出相同的字符串,但与 puts() 不同,它在打印后不添加新行。 将字符串传递给函数因为字符串是数组,我们可以像将数组传递给函数一样将字符串传递给函数。 C 语言将字符串传递给函数的示例让我们举一个例子来说明如何在 C 语言中将字符串传递给函数。 示例编译并运行输出 The string is: Hello from main! 说明 在此示例中,我们在 main 函数中声明一个字符串,并将其发送到另一个名为 displayString 的函数。之后,此函数将字符串作为字符数组参数并显示它。它展示了在 C 语言中如何通过仅传递数组名称(指向字符串第一个字符的指针)将字符串传递给函数。 指针与字符串在 C 语言中,我们已经使用了 指针 和数组、函数 以及基本数据类型。然而,指针可以用于指向字符串。使用指针指向字符串有各种优点。让我们考虑以下示例通过指针访问字符串。 C 语言中指针与字符串的示例让我们举一个例子来说明 C 语言中指针与字符串。 示例编译并运行输出 tpointtech ![]() 我们知道字符串是字符数组,所以指针可以以与数组相同的方式使用。在上面的例子中,p 被声明为字符数组 s 的指针。p 的作用类似于 s,因为 s 是字符串的基地址,并且在内部被视为指针。但是,我们不能直接更改 s 的内容或将 s 的内容复制到另一个字符串中。为此,我们需要使用指针来存储字符串。在下面的例子中,我们展示了使用指针将一个字符串的内容复制到另一个字符串中。 示例编译并运行输出 String p: hello tpointtech copying the content of p into q... String q: hello tpointtech 一旦定义了字符串,它就不能被重新分配给另一组字符。但是,使用指针,我们可以将一组字符分配给字符串。考虑以下示例。 示例编译并运行输出 Before assigning: hello tpointtech After assigning: hello C 字符串选择题1) C 字符串中空字符 '\0' 的目的是什么?
答案: c) 表示字符串的结尾 2) 以下哪一项使用字符串字面量正确初始化字符串?
答案: a) char s[] = "tech"; 3) C 语言中哪个函数用于确定字符串的长度?
答案: c) strlen() 4) 以下代码的输出是什么?
答案: b) e 5) puts() 和 fputs() 函数的主要区别是什么?
答案: d) puts() 自动添加换行符,fputs() 不添加
|
我们请求您订阅我们的新闻通讯以获取最新更新。