То, что у вас есть, это массив указателей.Это подходит для двумерного массива строк, но не для двумерного массива символов.Это не ясно из вашего вопроса, поэтому я предполагаю, что вы действительно хотите двумерный массив символов.Синтаксис: char array [r][c];
.
Примечательно, поскольку вы использовали r
и c
, которые являются переменными времени выполнения, этот массив представляет собой массив переменной длины (VLA),Такой массив не может быть размещен в области видимости файла («глобальный»).Поместите массив в функцию типа main()
.
. Чтобы использовать VLA, у вас также должен быть стандартный компилятор Си.Компиляторы C ++ и компиляторы динозавров не будут работать.
Поскольку вам придется объявлять VLA внутри функции, он получает «длительность автоматического хранения».Это означает, что не автоматически обнуляется.При необходимости вы должны сделать это самостоятельно: memset(array, 0, sizeof array);
.Но вы, вероятно, хотите инициализировать его каким-то конкретным символом вместо 0.
Пример:
#include <stdio.h>
#include <string.h>
int main (void)
{
int r = 5;
int c = 5;
char array [r][c];
memset(array, '#', sizeof array);
for(size_t i=0; i<r; i++)
{
for(size_t j=0; j<c; j++)
{
printf("%c", array[i][j]);
}
printf("\n");
}
}
Вывод:
#####
#####
#####
#####
#####