Вы компилируете код с включенными дополнительными предупреждениями, что очень хорошая идея.
Компилятор настаивает на том, чтобы вы инициализировали массив массивов с помощью инициализатора с такой же структурой.В вашем случае вы можете попробовать это char walk[10][10] = { { 0 } };
.
У вас может быть еще более строгая настройка, когда компилятор указывает, что присутствует недостаточно инициализаторов.Полный инициализатор будет выглядеть так:
char walk[10][10] = {
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
};
Или более компактная версия:
char walk[10][10] = { "", "", "", "", "", "", "", "", "", "" };
Но, глядя на ваш код, walk
вообще не нуждается в инициализаторе, так как вы установили всезаписи прямо под объявлением:
#include <stdio.h>
int main() {
char walk[10][10];
for (int row = 0; row < 10; row++) {
for (int col = 0; col < 10; col++) {
walk[row][col] = '.';
printf("%c", walk[row][col]);
}
}
getchar();
return 0;
}
PS: как говорит pmg , ваш код допустим и будет компилироваться как с разрешающими настройками по умолчанию, но с использованием предупреждений компилятора, чтобы избежать глупостиошибки бьют дополнительные ограничения.Код, который аккуратно компилируется с высокими уровнями предупреждений, обычно содержит меньше ошибок.
Обратите также внимание, что вы можете инициализировать walk
с помощью одного вызова memset(walk, '.', sizeof(walk));
и более эффективно выводить отдельные символы с помощью putchar(walk[row][col]);