I use a LCD display to display a not known size of text ( changes over time ). I wish to display it at the center of LCD ( 2X16 ).
I declare:
char t[16];
char h[16];
sprintf(t, "%.1f%cC %.0f%%", temperature,223, humidity);
Now, since I want to add additional data on a specific line and center it, I need to know it size. When using:
sizeof(t)/(sizeof(t[0])
I get 16
which is the size determined and not its actual size.
How can I get the exact number of chars used?
1 Answer 1
The function I think you are looking for is strlen
- STRing LENgth.
It counts the number of characters in a string up until it finds the "NULL" end of string marker.
Serial.println(strlen(t));
-
well my guess was it refers to String onlyguyd– guyd2020年01月18日 20:54:24 +00:00Commented Jan 18, 2020 at 20:54
-
2
strlen
is for C strings (NULL-terminated character arrays). ForString
you wantString.length()
.Majenko– Majenko2020年01月18日 21:01:26 +00:00Commented Jan 18, 2020 at 21:01 -
@Guy.D the code you posted is using char arrays, not
String
objects. Majenko's answer is what you need, notString.length()
. Note that you need to be careful not to overflow your char array. That will cause undefined behavior (read "bugs.")Duncan C– Duncan C2020年01月18日 22:00:33 +00:00Commented Jan 18, 2020 at 22:00