如何使一个字符串数组的数组?

时间:2018-09-23 21:20:31

标签: c arrays string pointers

所以,我有三个字符串数组指针:

char *list1[3] = {"String 11", "String 12", "String 13"};
char *list2[3] = {"String 21", "String 22", "String 23"};
char *list3[3] = {"String 31", "String 32", "String 33"};

运行时,我需要根据用户输入来访问它们。例如:如果输入为0,访问list1等等,我认为我可以使用这些数组指针组成一个数组,并且可以工作。这是我尝试过的:

char *ArrayList[3] = {*list1, *list2, *list3};

但是当我尝试打印ArrayList [0],ArrayList [1]和ArrayList [2]时,它只是打印了每个列表的第一个元素。

我在这里做什么错了?

1 个答案:

答案 0 :(得分:2)

您的ArrayList应该持有指向这些指针的指针,并且您将需要一个循环来打印一行的所有列(否则,您将始终仅获得一行的第一个元素):

char *list1[3] = {"String 11", "String 12", "String 13"};
char *list2[3] = {"String 21", "String 22", "String 23"};
char *list3[3] = {"String 31", "String 32", "String 33"};

char **ArrayList[3] = {list1, list2, list3};

int main() {
    for (int r=0;r<3;r++) {
        for (int c=0; c<3; c++) {
            printf("%s ",ArrayList[r][c]);
        }
        printf("\n");
    }
}

输出:

String 11 String 12 String 13 
String 21 String 22 String 23 
String 31 String 32 String 33