Строки: warning: (near initialization for 'someName[0]') - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Вобщем то был обычный масив строк
const char *someName[] = {
   "str1", "str2", "str3", ... "strN"
}
Но масив этот большой, а в нём приходится искать определёное слово много раз, поэтому решил поделить этот масив на двухмерный с групировкой по первой букве.
const char *someName[] = {
  { // A
     "Astr1", "Astr2", "Astr3", ... "AstrN"
  },
  { // B
     "Bstr1", "Bstr2", "Bstr3", ... "BstrN"
  },
  ....
  { // Z
     "Zstr1", "Zstr2", "Zstr3", ... "ZstrN"
  },
}
Строк на каждую букву разное количество (если что) Но вот теперь я схватываю кучу warning'ов
warning: braces around scalar initializer
warning: (near initialization for 'someName[0]')
warning: excess elements in scalar initializer
warning: (near initialization for 'someName[0]')
warning: excess elements in scalar initializer
.........
и так по каждому слову. Я понимаю что нужно как-то обьявить масив по другому, но как только не пробовал, ошибки не пропадают. Читал на эту тему stackoverflow но там примеры с интами и пользовательскими структурами, но указатели на char как я понимаю немного запутанее.

Решение задачи: «Строки: warning: (near initialization for 'someName[0]')»

textual
Листинг программы
#include <stdio.h>
 
char* some_words1[] = { "word0", "word1", "word2" };
char* some_words2[] = { "word0", "word1" };
char* some_words3[] = { "word0", "word1", "word2", "word3"};
 
char **string_matrix[] = {
    some_words1, some_words2, some_words3
};
 
int main() {
    printf("%s\n", string_matrix[0][2]);
    printf("%s\n", string_matrix[1][1]);
    printf("%s\n", string_matrix[2][3]);
    return 0;
}

Объяснение кода листинга программы

В данном коде объявлены три массива указателей на строки: some_words1, some_words2 и some_words3, которые содержат соответственно 3, 2 и 4 строки. Затем эти массивы объединяются в один двумерный массив string_matrix, который содержит три строки, каждая из которых является массивом указателей на строки. В функции main() происходит печать элементов двумерного массива с помощью функции printf(). Печатаются элементы string_matrix[0][2], string_matrix[1][1] и string_matrix[2][3], что соответствует печати третьей строки первого массива, второй строки второго массива и третьей строки третьего массива.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.222 из 5
Похожие ответы