1、C 语言中的字符串
C 语言中,字符串实际上是字符数组,因此你不能像处理其他类型的变量(如整数或浮点数)一样,直接使用 =
运算符给字符串赋值。因为字符串是数组,而在 C 语言中,数组不能直接赋值。
#include <stdio.h>
int main() {
char str1[] = "Hello";
char str2[] = "World";
str1 = str2; // 错误!C 语言中不能直接赋值数组
return 0;
}
2、使用 strcpy
修改字符串(对于数组)
如有一个字符数组,并且想要给它赋一个新的字符串值,应该使用 <string.h>
中的 strcpy
函数。该函数将一个字符串复制到另一个字符串中,确保正确处理空字符('\0'
)。
#include <stdio.h>
int main() {
// 分配足够的空间来存储新字符串
char str1[20];
// 将新字符串复制到str1 中
strcpy(str1, "Hello, world!");
printf("%s",str1);
return 0;
}
3、使用指针处理动态字符串
如想动态地赋值字符串(使用指针),可以使用 malloc
或 calloc
为字符串分配内存。就可以在释放之前为指针赋予新的字符串值。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char *str = malloc(20 * sizeof(char)); // 为字符串分配内存
if (str == NULL) {
// 处理内存分配失败的情况
return 1;
}
strcpy(str, "Hello, world!"); // 为 str 赋一个新字符串
printf("%s\n", str); // 打印字符串
free(str); // 使用完后释放内存
return 0;
}
4、避免使用 strdup
(如果不支持)
strdup
是一种便捷的函数,用于分配内存并将字符串复制到该内存中。它不是 C 标准库的一部分,但在一些平台(如 POSIX 系统)上是可以使用的。
#include <stdio.h>
int main() {
// 分配内存并复制字符串
char *str = strdup("Hello, world!");
printf("%s",str);
// 使用字符串
free(str); // 使用完后释放内存
return 0;
}