Правильный способ записи строк символов в исходном коде C - это кавычки ("
), а не апострофы ('
).Апострофы предназначены для отдельных символов (или, в редких случаях, нескольких символов, объединенных в одно целое число).Таким образом, ваш printf
должен быть:
printf("%s", arr[i][j]);
Похоже, вы хотите, чтобы ваш массив содержал либо строки символов, либо указатели на (первые символы) строк.Для последнего вы должны объявить ваш массив с char *
, а не int
.
Чтобы объявить массив, вы должны использовать скобки ([
и ]
), чтобы дать ему размеры.Недостаточно просто перечислить несколько значений для него.Итак, ваша декларация должна быть:
char *arr[4][3] = {{"00","01","02"},{"10","11","12"},{"20","21","22"},{"30","31","32"}};
Для первого измерения все еще требуются скобки, но вы можете опустить число, чтобы компилятор мог получить его, подсчитав инициализаторы:
char *arr[][3] = {{"00","01","02"},{"10","11","12"},{"20","21","22"},{"30","31","32"}};
Индексы, которые вы используете с массивом, должны соответствовать его размерам.Вы перечислили только три инициализатора для каждой строки массива, поэтому кажется, что в этом измерении есть три элемента, но ваш цикл использует четыре:
for(int j = 0;j<4;j++){
Либо этот 4
должен быть изменен на 3
или вы должны объявить массив как char *arr[4][4]
и предоставить еще один элемент для каждой строки.