在C語言中,要存儲多個字符串,通??梢允褂米址羔様?shù)組(即字符串?dāng)?shù)組)或動態(tài)分配的內(nèi)存。以下是兩種方法的詳細(xì)說明:
char*
)。strlen()
函數(shù)加上一個額外的字符(用于存儲字符串終止符\0
)來完成。示例代碼:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
// 聲明一個字符指針數(shù)組
char *strs[] = {NULL, NULL}; // 初始化為兩個NULL指針
// 分配內(nèi)存并初始化字符串
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]);
}
// 釋放內(nèi)存
for (int i = 0; strs[i] != NULL; i++) {
free(strs[i]);
}
return 0;
}
char*
)。malloc()
函數(shù)為字符串分配內(nèi)存,并將返回的指針賦給該變量。strcpy()
函數(shù)將原始字符串復(fù)制到新分配的內(nèi)存中。示例代碼:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
char *str1 = NULL;
char *str2 = NULL;
// 分配內(nèi)存并初始化字符串
str1 = malloc(10 * sizeof(char));
strcpy(str1, "Hello");
str2 = malloc(13 * sizeof(char));
strcpy(str2, "World!");
// 打印字符串
printf("%s\n", str1);
printf("%s\n", str2);
// 釋放內(nèi)存
free(str1);
free(str2);
return 0;
}
注意:在使用完動態(tài)分配的內(nèi)存后,務(wù)必使用free()
函數(shù)釋放它,以避免內(nèi)存泄漏。