Как получить длину массива символов
Я использую ЖК-дисплей для отображения текста неизвестного размера (изменяющегося со временем). Я хочу отобразить его в центре ЖК-дисплея ( 2X16 ).
Я заявляю:
char t[16];
char h[16];
sprintf(t, "%.1f%cC %.0f%%", temperature,223, humidity);
Теперь, поскольку я хочу добавить дополнительные данные в определенную строку и отцентрировать ее, мне нужно знать ее размер. При использовании:
sizeof(t)/(sizeof(t[0])
Я получаю 16
, что является определенным, а не фактическим размером.
Как получить точное количество используемых символов?
@Guy . D, 👍3
1 ответ
Лучший ответ:
▲ 7
Я думаю, вам нужна функция strlen
- STRing LENgth.
Он подсчитывает количество символов в строке до тех пор, пока не найдет маркер конца строки "NULL".
Serial.println(strlen(t));
,
@Majenko
Смотрите также:
- Количество элементов в массиве char
- Возможно ли иметь массив массивов int?
- Ошибка: invalid application of 'sizeof' to incomplete type 'int []' при попытке вычислить размер массива в библиотеке
- Инициализация массива структур
- Невозможно создать массив типа const char*
- Почему эта программа на C++ не может прочитать Serial.write() моего arduino?
- Работает ли конструкция int array[100] = {0} на Arduino?
- Массив динамического размера в качестве члена класса
ну, я думаю, это относится только к String, @Guy . D
strlen
предназначен для строк C (массивы символов, завершающиеся NULL). ДляString
вы хотитеString.length()
., @Majenko@Guy.D Код, который вы разместили, использует массивы символов, а не объекты
String
. Вам нужен ответ Маженко, а неString.length()
. Обратите внимание, что вам нужно быть осторожным, чтобы не переполнить массив символов. Это вызовет неопределенное поведение (читай «ошибки»)., @Duncan C