Как сделать массив из массивов строк? - PullRequest
0 голосов
/ 24 сентября 2018

Итак, у меня есть три массива указателей строк:

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, доступ к списку 1 и т. Д. Я подумал, что мог бы создать массив этих указателей массива, и он мог бы работать.Вот что я попробовал:

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

Но когда я попытался напечатать ArrayList [0], ArrayList [1] и ArrayList [2], он просто напечатал первый элемент каждого списка.

Что я здесь не так делаю?

1 Ответ

0 голосов
/ 24 сентября 2018

Ваш 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 
...