在C语言中,要存储多个字符串,通常可以使用字符指针数组(即字符串数组)或动态分配的内存。以下是两种方法的详细说明:
char*
)。strlen()
函数加上一个额外的字符(用于存储字符串终止符\0
)来完成。示例代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
// 声明一个字符指针数组
char *strs[] = {NULL, NULL}; // 初始化为两个NULL指针
// 分配内存并初始化字符串
strs[0] = malloc(10 * sizeof(char));
strcpy(strs[0], "Hello");
strs[1] = malloc(13 * sizeof(char)); // 13个字符足够存储"World!\0"
strcpy(strs[1], "World!");
// 打印字符串
for (int i = 0; strs[i] != NULL; i++) {
printf("%s\n", strs[i]);
}
// 释放内存
for (int i = 0; strs[i] != NULL; i++) {
free(strs[i]);
}
return 0;
}
char*
)。malloc()
函数为字符串分配内存,并将返回的指针赋给该变量。strcpy()
函数将原始字符串复制到新分配的内存中。示例代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
char *str1 = NULL;
char *str2 = NULL;
// 分配内存并初始化字符串
str1 = malloc(10 * sizeof(char));
strcpy(str1, "Hello");
str2 = malloc(13 * sizeof(char));
strcpy(str2, "World!");
// 打印字符串
printf("%s\n", str1);
printf("%s\n", str2);
// 释放内存
free(str1);
free(str2);
return 0;
}
注意:在使用完动态分配的内存后,务必使用free()
函数释放它,以避免内存泄漏。