Инициализация массива 2d символов заданными значениями

#c #arrays #initialization

#c #массивы #инициализация

Вопрос:

У меня возникли некоторые проблемы с инициализацией этого массива символов. Предполагается, что это массив размером 5×5, инициализированный заданными значениями. Когда я запускаю программу, в ошибке компилятора указывается «Символьная константа слишком длинная для ее типа». Я еще не добрался до указателей, поэтому я пока не должен их использовать. Однако я буду создавать методы для управления 2d-массивом, но я застрял здесь

 #include <iostream>

using namespace std;

int main()
{

    char my_array [5][5];
    my_array = 'sweet','heart','egrit','clone','odor';   
    //cout<<"Hello World";

    return 0;
  

}

Комментарии:

1. Для начала, каждый отдельный массив должен содержать шесть символов, а не пять. Вы забываете завершающий байт. Затем в строках C используются двойные, а не одинарные кавычки. Наконец, в вашем учебнике по C должно быть много примеров инициализации массивов; есть ли что-то конкретное в объяснении или примерах вашего учебника, о которых вам неясно?

2. @SamVarshavchik — вам нужен только 0 -terminator, если вы собираетесь обрабатывать эти последовательности символов, такие как C-строки (включая инициализацию этого массива строками).

3. Преобразовать массив символов в массив строк

4. Я использую девятое издание «Начало работы с C «. Он охватывает многомерные массивы, но я ничего не уловил в массивах типа данных char. Я помню, как переходил к нулевому завершающему символу в курсе udemy, который я купил, поэтому я вернусь и рассмотрю это. Школа в настоящее время не является очной, поэтому самообучение было непростой задачей. Намного проще понять концепции в среде класса, но, конечно, это можно сделать самостоятельно.

Ответ №1:

То, что вы ищете, это:

 char my_array [5][6] = { "sweet", "heart", "egrit", "clone", "odor" };
  

Обратите внимание, что второе измерение должно быть 6, а не 5, чтобы nul в каждой строке оставалось место для завершения.

Ответ №2:

Если вам просто нужно инициализировать 2D-массив, вы можете сделать это следующим образом:

 char my_array[5][5] = {
  {'s', 'w', 'e', 'e', 't'},
  {'h', 'e', 'a', 'r', 't'},
  {'e', 'g', 'r', 'i', 't'},
  {'c', 'l', 'o', 'n', 'e'},
  {'o', 'd', 'o', 'r', '?'},
};