C语言二维字符串数组输出
在C语言中,二维字符串数组实际上是一个字符指针数组(char *[])或二维字符数组(char[][]),下面我将介绍几种常见的定义和输出方式。

(图片来源网络,侵删)
定义方式
字符指针数组
char *str_array[] = {
"Hello",
"World",
"C Programming"
};
二维字符数组
char str_array[][20] = {
"Hello",
"World",
"C Programming"
};
输出方法
方法1:使用循环逐个输出字符串
#include <stdio.h>
int main() {
char *str_array[] = {
"Hello",
"World",
"C Programming"
};
int size = sizeof(str_array) / sizeof(str_array[0]);
for (int i = 0; i < size; i++) {
printf("%s\n", str_array[i]);
}
return 0;
}
方法2:使用指针数组遍历
#include <stdio.h>
int main() {
char *str_array[] = {
"Hello",
"World",
"C Programming"
};
for (char **p = str_array; *p != NULL; p++) {
printf("%s\n", *p);
}
return 0;
}
方法3:二维字符数组输出
#include <stdio.h>
int main() {
char str_array[][20] = {
"Hello",
"World",
"C Programming"
};
int rows = sizeof(str_array) / sizeof(str_array[0]);
for (int i = 0; i < rows; i++) {
printf("%s\n", str_array[i]);
}
return 0;
}
注意事项
- 字符指针数组:每个字符串可以有不同的长度,但需要确保指针有效。
- 二维字符数组:所有字符串的长度不能超过第二维的大小(如上面的20)。
- 字符串终止符:确保每个字符串都以'\0'否则可能导致输出错误。
- 内存管理:如果是动态分配的字符串,记得释放内存。
完整示例
#include <stdio.h>
int main() {
// 定义二维字符串数组
char *fruits[] = {
"Apple",
"Banana",
"Orange",
"Grape",
NULL // 作为结束标记
};
// 输出所有字符串
printf("Fruit list:\n");
for (int i = 0; fruits[i] != NULL; i++) {
printf("%d. %s\n", i+1, fruits[i]);
}
return 0;
}
输出结果:
Fruit list:
1. Apple
2. Banana
3. Orange
4. Grape
希望这些信息对你有帮助!如果你有特定的需求或遇到问题,可以进一步提问。

(图片来源网络,侵删)
