Как получить длину массива символов

Я использую ЖК-дисплей для отображения текста неизвестного размера (изменяющегося со временем). Я хочу отобразить его в центре ЖК-дисплея ( 2X16 ).

Я заявляю:

  char t[16];
  char h[16];
  sprintf(t, "%.1f%cC %.0f%%", temperature,223, humidity);

Теперь, поскольку я хочу добавить дополнительные данные в определенную строку и отцентрировать ее, мне нужно знать ее размер. При использовании:

sizeof(t)/(sizeof(t[0])

Я получаю 16, что является определенным, а не фактическим размером.

Как получить точное количество используемых символов?

, 👍3


1 ответ


Лучший ответ:

7

Я думаю, вам нужна функция strlen - STRing LENgth.

Он подсчитывает количество символов в строке до тех пор, пока не найдет маркер конца строки "NULL".

Serial.println(strlen(t));
,

ну, я думаю, это относится только к String, @Guy . D

strlen предназначен для строк C (массивы символов, завершающиеся NULL). Для String вы хотите String.length()., @Majenko

@Guy.D Код, который вы разместили, использует массивы символов, а не объекты String. Вам нужен ответ Маженко, а не String.length(). Обратите внимание, что вам нужно быть осторожным, чтобы не переполнить массив символов. Это вызовет неопределенное поведение (читай «ошибки»)., @Duncan C