Вставка массива в другой массив в C - PullRequest
0 голосов
/ 02 августа 2020

Я пытаюсь создать переменную массива, внутри каждой позиции которой будет другой массив. Мой случай следующий:

int main() {
    char foo[2];
    char dummy[3] = {'F', 'O', 'X'};

    foo[1] = dummy;
    printf("%c", foo[1]);
    /* This printf is like a way of saying "show me the 'dummy' list" */

    return 0;
}

С этим кодом я ожидаю, что консоль покажет мне фиктивный список. Вместо этого я получил предупреждение, в котором говорится:

"предупреждение: несовместимый указатель на целочисленное преобразование, присвоенное 'char' из 'char [3]' [-Wint- conversion]"

Не знаю, хорошо ли понятна моя проблема, но я хотел бы, чтобы позиция массива, такая как foo [1], содержала другой массив, такой как dummy, поэтому, когда я вызываю foo [1], я получаю этот фиктивный массив.

Надеюсь, вы сможете мне помочь, и заранее благодарю вас за то, что нашли время помочь мне.

1 Ответ

1 голос
/ 02 августа 2020

Переменная foo , которую вы определили, представляет собой символьный массив длиной два, но вам нужен массив символьных указателей. Обратите внимание, что массив символов dummy не завершается; лучше не указывать длину и инициализировать ее строковым литералом. Кроме того, чтобы напечатать строку, вам нужно использовать %s в вызове printf . Попробуйте это:

#include <stdio.h>

int main(void)
{
    char *foo[2];
    char dummy[] = "FOX";

    foo[1] = dummy;
    printf("%s\n", foo[1]);
    return 0;
}
...