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; }