在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()
函數釋放它,以避免內存泄漏。