C 字符串
字符串
字符串用于存储文本/字符。
例如,"Hello World" 就是一个由字符组成的字符串。
与许多其他编程语言不同,C 没有 String 类型来轻松创建字符串变量。相反,您必须使用 char
类型并创建一个字符数组来在 C 中生成字符串:
char greetings[] = "Hello World!";
请注意,您必须使用双引号 (""
)。
要输出字符串,您可以使用 printf()
函数和格式说明符 %s
来告诉 C,我们现在处理的是字符串:
实例
char greetings[] = "Hello World!"; printf("%s", greetings);
访问字符串
由于字符串实际上是 C 中的数组,因此您可以通过引用方括号 []
内的索引号来访问字符串。
此例打印 greetings
中的第一个字符 (0):
实例
char greetings[] = "Hello World!"; printf("%c", greetings[0]);
请注意,我们必须使用 %c
格式说明符来打印单个字符。
修改字符串
要更改字符串中特定字符的值,请引用索引号并使用单引号:
实例
char greetings[] = "Hello World!"; greetings[0] = 'J'; printf("%s", greetings); // 输出 Jello World! 而不是 Hello World!
遍历字符串
您也可以使用 for
循环来遍历字符串中的字符:
实例
char carName[] = "Volvo"; int i; for (i = 0; i < 5; ++i) { printf("%c\n", carName[i]); }
正如我们在数组章节中所述,您还可以使用 sizeof
公式(而不是在循环条件中手动写入数组的大小(i < 5
)),以使循环更加灵活:
实例
char carName[] = "Volvo"; int length = sizeof(carName) / sizeof(carName[0]); int i; for (i = 0; i < length; ++i) { printf("%c\n", carName[i]); }
创建字符串的另一种方式
在上面的示例中,我们使用了“字符串字面值”来创建字符串变量。这是在C中创建字符串的最简单方法。
您还应该注意,您可以使用一组字符来创建字符串。这个示例将与本页开始的示例产生相同的结果:
实例
char greetings[] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\0'}; printf("%s", greetings);
为什么我们在末尾包含 \0
字符?这被称为“空终止字符”,在使用此方法创建字符串时必须包含该字符。它告诉 C 这是字符串的结尾。
差异
创建字符串的两种方法之间的区别在于,第一种方法更容易编写,并且您不必包含 \0
字符,因为 C 会为您做这件事。
您应该注意,两个数组的大小是相同的:它们都有 13 个字符(顺便说一下,空格也算作一个字符),包括 \0
字符:
实例
char greetings[] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\0'}; char greetings2[] = "Hello World!"; printf("%lu\n", sizeof(greetings)); // 输出 13 printf("%lu\n", sizeof(greetings2)); // 输出 13
现实生活中的例子
使用字符串创建简单的欢迎消息:
实例
char message[] = "很高兴见到你,"; char fname[] = "Bill"; printf("%s %s!", message, fname);