目录
C语言中没有特定的字符串类型,通常是将字符串放在一个字符数组中。字符串实际上是由一系列字符组成的,以空字符('\0'
)作为结束标志。可以通过声明字符数组来创建字符串,并使用数组中的元素来存储字符串的每个字符。
创建一个长度为20的字符数组 str
,并将字符串 "Hello, world!" 存储在数组中:
char str[20] = "Hello, world!";
(注意:需要确保数组的长度足够大,以容纳字符串及其结束标志)
- printf(“%d\n”,m);
- printf(“Hello world”);
- char str[10];
- strcpy(str,“hello”);
使用字符数组的方式来声明和初始化一个字符串数组,其中每个元素都是一个字符串:
- char strings[][20] = {
- "Hello",
- "World",
- "C programming"
- };
上述代码中,strings
是一个包含三个字符串的数组。每个字符串可以具有不同的长度(数组的每个元素都需要足够大,以容纳对应的字符串及其结束标志)。
注意:字符串数组中的每个字符串都以空字符结尾。在使用字符串数组时,需要注意字符串的结束位置。
通过使用指针,可以更加灵活地操作和处理字符串。指针的优势在于可以直接访问字符串中的字符,而不需要通过数组索引来访问。
- char *strPtr; // 声明一个字符指针
- char *strPtr = "Hello"; // 初始化一个指向字符串常量的指针
可以声明一个字符指针 strPtr
,然后将其初始化为指向字符串常量 "Hello" 的起始位置。字符串常量是以字符数组的形式存储的,因此可以使用指针来访问其中的字符。
使用指针可以遍历字符串中的每个字符。
- char *strPtr = "Hello";
- while (*strPtr != '\0') {
- printf("%c", *strPtr);
- strPtr++; // 指针递增,指向下一个字符
- }
在上述示例中,通过检查指针所指向的字符是否为结束标志 '\0'
,循环逐个打印字符串中的字符,并通过递增指针来访问下一个字符。
- char source[] = "Hello";
- char destination[10];
- char *srcPtr = source;
- char *destPtr = destination;
- while (*srcPtr != '\0') {
- *destPtr = *srcPtr;
- srcPtr++;
- destPtr++;
- }
- *destPtr = '\0'; // 在目标字符串末尾添加结束标志
通过逐个复制源字符串中的字符到目标字符串,并递增源指针和目标指针,最后在目标字符串末尾添加结束标志 '\0'
,完成字符串拷贝。
- char *str1 = "Hello";
- char *str2 = "Hello";
- if (strcmp(str1, str2) == 0) {
- printf("字符串相等\n");
- } else {
- printf("字符串不相等\n");
- }
使用 strcmp
函数比较两个字符串是否相等,函数返回值为0表示字符串相等。
- #include
- #include
-
- void reverseString(char* str) {
- int length = strlen(str);
-
- // 使用两个指针,一个指向字符串起始位置,一个指向字符串末尾
- char* start = str;
- char* end = str + length - 1;
-
- // 交换指针所指向的字符,并向中间移动指针,直到两个指针相遇
- while (start < end) {
- char temp = *start;
- *start = *end;
- *end = temp;
-
- start++;
- end--;
- }
- }
-
- int main() {
- char str[] = "Hello, World!";
- printf("原始字符串: %s\n", str);
-
- reverseString(str);
-
- printf("反转后的字符串: %s\n", str);
-
- return 0;
- }
reverseString
函数接受一个指向字符串的指针,并使用两个指针 start
和 end
分别指向字符串的起始位置和末尾位置。通过交换两个指针所指向的字符,并向中间移动指针,可以实现字符串的反转操作。main
函数中,声明一个字符串 str
,并将其作为参数传递给 reverseString
函数。然后打印出反转后的字符串。关于指针作参数,详见后文:九、再论函数