Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как создать массив строк переменной длины?
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
kolobochishe
При работе с разными графическими элементами меню удобно работать с индексами. Но выводить на экран надо название элемента.
Например вот сейчас такая задачка: выбрать тип оконной функции и передать программе номер выбора. Чтобы не городить вот такое

Код
        GUI_DispStringAt("Select WINDOW FUNCTION for FFT", 40, 40);
        GUI_DispStringAt("1 - Sine window", 20, 80);
        GUI_DispStringAt("2 - Hann window", 20, 110);
        GUI_DispStringAt("3 - Blackman window", 20, 140);
        GUI_DispStringAt("4 - Hamming window", 20, 170);
        GUI_DispStringAt("5 - Blackman–Nuttall window", 20, 200);
        GUI_DispStringAt("0 and other Keys - Rectangular window", 20, 230);
        GUI_DispStringAt("ESC - Return to A(t)-diagram", 20, 230);


хочу все строки поместить в один массив строк, чтобы сделать цикл вывода

Код
unsigned char NameOfFFTWindows[][] =
  {
    "1 - Sine window",
    "2 - Hann window",  
    "3 - Blackman window",
    "4 - Hamming window",
    "5 - Blackman–Nuttall window",
    "0 and other Keys - Rectangular window"
  };


но компилятор требует, чтобы длина строки все таки была определена. Количество строк необязательно, но длину требует.

Вот так компилит
Код
unsigned char NameOfFFTWindows[][40] =
  {
    "1 - Sine window",
    "2 - Hann window",  
    "3 - Blackman window",
    "4 - Hamming window",
    "5 - Blackman–Nuttall window",
    "0 and other Keys - Rectangular window"
  };


Но это же явный перерасход памяти. Как сделать, чтобы все было компактно?
MrYuran
Цитата(kolobochishe @ Mar 21 2012, 09:22) *
Но это же явный перерасход памяти. Как сделать, чтобы все было компактно?

Наверно, ваша реализация не получится.
Это связяно с индексацией многомерного массива.
Лучше сделайте набор константных строк, а в массив соберите указатели на них.
Или что-то типа
Код
const char* NameOfFFTWindows[] = {
    "1 - Sine window",
    "2 - Hann window",  
    ...
}
kolobochishe
да sm.gif все работает. Благодарю
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.