Char* mess[] = {"...", "...", ...};

Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1482
Зарегистрирован: Вс май 13, 2012 00:01:54

Char* mess[] = {"...", "...", ...};

Сообщение Ariadna-on-Line »

1/
функция sizeof(Mess) - выдаст размер записи о массиве
функция sizeof(Mess[0]) - выдаст размер записи об первом элементе.

Вопрос - как узнать собственную длину любого элемента массива ? Его длина присутствует - во втором байте двух-байтной записи об элементе, но как его прочитать ? Я в синтаксисе этих пойнтеров и звездочек - дуб бесперспективный ((((

С уважением к знатокам.
Последний раз редактировалось Ariadna-on-Line Ср мар 19, 2025 19:01:36, всего редактировалось 1 раз.
Реклама
Аватара пользователя
smacorp
Друг Кота
Сообщения: 3481
Зарегистрирован: Вт окт 22, 2013 04:37:23
Откуда: Казань

Re: Char* mess[] = {"...", "...", ...};

Сообщение smacorp »

1/
Используйте strlen(Mess[0])

2/
strcpy и strcat не подходят? Тогда memcpy.
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезист Ordyl Alpha 350
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльные маски XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com
Реклама
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1482
Зарегистрирован: Вс май 13, 2012 00:01:54

Re: Char* mess[] = {"...", "...", ...};

Сообщение Ariadna-on-Line »

Спасибо что ответили. Нашел наконец сайт Гайвера с лекцией по этой теме. Читаю. Поэтому удалил второй вопрос. Но возможно задам еще вопросы. Спасибо.
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1482
Зарегистрирован: Вс май 13, 2012 00:01:54

Re: Char* mess[] = {"...", "...", ...};

Сообщение Ariadna-on-Line »

Всем Привет. Вот успешно работающий код. Он два раза вытягивает строки текста из ПРОГМЕМа, дописывает к ним всякие данные и получившуюся строку отправляет на вывод. В функции используется временнй char buf-ер. Возник вопрос :
1. Как не создавать буфер, а напрямую грузить из ПРОГМЕМА в строку. Сейчас это не получается - пишет о несоответствии типов данных.
С уважением.
Спойлерconst char TimeMess[] PROGMEM = "Время(ч:м:с|д/м/г) - ";
const char TempMess[] PROGMEM = "Температура = ";

// функция строки часов + температуры (2)
void TCrun() {

String tape = "";
char buf_g[strlen_P(TimeMess) + 1]; // Выделим буфер достаточной длины С именем buf_g
strcpy_P(buf_g, TimeMess); // Копируем строку в буфер
tape += buf_g; // Отдаем буфер в работу

tape += now.hour();
tape += ':';
tape += now.minute();
tape += ':';
tape += now.second();
tape += " | ";
tape += now.day();
tape += '/';
tape += now.month();
tape += '/';
tape += now.year();

tape = utf8rus(tape);
Run();
------------------------------------------
tape = "";
buf_g[strlen_P(TempMess) + 1]; // Выделим буфер достаточной длины
strcpy_P(buf_g, TempMess); // Копируем строку в буфер
tape += buf_g; // Отдаем буфер в работу

tape += rtc.getTemperature();
tape += " C'";

tape = utf8rus(tape);
Run();
}
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15571
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Char* mess[] = {"...", "...", ...};

Сообщение BOB51 »

Использовать строку как массив...
Собственно одна из позиций "референса" - string - char array
:wink:
Реклама
Ответить

Вернуться в «Arduino»