Как получить длину массива символов
Я использую ЖК-дисплей для отображения текста неизвестного размера (изменяющегося со временем). Я хочу отобразить его в центре ЖК-дисплея ( 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?
- Замена нескольких выводов pinMode() и digitalWrite() на массив
- Инициализация массива структур
- Ошибка: invalid application of 'sizeof' to incomplete type 'int []' при попытке вычислить размер массива в библиотеке
- Работает ли конструкция int array[100] = {0} на Arduino?
- Невозможно создать массив типа const char*
- Как изменить байт на целое число? - Arduino
ну, я думаю, это относится только к String, @Guy . D
strlenпредназначен для строк C (массивы символов, завершающиеся NULL). ДляStringвы хотитеString.length()., @Majenko@Guy.D Код, который вы разместили, использует массивы символов, а не объекты
String. Вам нужен ответ Маженко, а неString.length(). Обратите внимание, что вам нужно быть осторожным, чтобы не переполнить массив символов. Это вызовет неопределенное поведение (читай «ошибки»)., @Duncan C