Инициализация большого двумерного массива в C - PullRequest
0 голосов
/ 22 марта 2012

Я хочу инициализировать все элементы:

char buffer[1000][1000];

до ' '.

Я пробовал

char buffer[1000][1000] = { ' ' };

и

char buffer[1000][1000] = { { ' ' } };

но оба пути, похоже, только инициализируют только первый член.

Я готов рассмотреть альтернативные подходы, которые выполняют работу, но я бы предпочел не писать в этом виде кода инициализации в main или даже отдельном методе инициализации.

Ответы [ 2 ]

9 голосов
/ 22 марта 2012
memset(buffer, ' ', sizeof buffer);

Если массив имеет автоматическую продолжительность хранения, рассмотрите возможность выделения кучи, чтобы избежать переполнения стека.

Если массив имеет статическую продолжительность хранения, вам все равно придется инициализировать массив во время выполнения какнет способа инициализировать элементы с ненулевым значением без предоставления отдельного значения инициализации для каждого из них.

3 голосов
/ 22 марта 2012

http://linux.die.net/man/3/memset

char *buffer = malloc(1000*1000);
memset(buffer, ' ', 1000*1000);

Вы захотите проверить код возврата malloc и заменить литералы, но в этом суть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...