String в char - Толи лыжи не едут, то ли я не из того теста =(
- Войдите на сайт для отправки комментариев
Вс, 04/03/2018 - 00:19
При выводе текста на LED матрицу столкнулся с проблемой - при попытке перевести String в char - на табло отображается абракадабра. Но при вводе из заранее введеного значения char - отлично отрисовывет.
Сначала я попробовал вот так
void setup() { Serial.begin(115200); String mystring="Тестовое сообщение"; char test[]="Тестовое сообщение"; const char *mychar = mystring.c_str(); if (mychar==test)Serial.print(" true"); else Serial.print(" false"); Serial.println(); } void loop() { }
Но в Serial увидел "false".
После решил пойти другим путём.
void setup() { Serial.begin(115200); String stringVar="Тестовое сообщение"; char charVar2[]="Тестовое сообщение"; char charVar[stringVar.length()+1]; stringVar.toCharArray(charVar, sizeof(charVar)); Serial.print(charVar2); Serial.print(" "); Serial.print(charVar2); if (charVar==charVar2) Serial.print(" true"); else Serial.print(" false"); Serial.println(); } void loop() { }
В Serial отбивается тот-же негативный результат.
Я в тупике =(
char[] так не сравнивают, см. функцию strcmp().
imakofix, у Вас действительно две разных строки, расположенные по разным адресам, содержимое которых совпадает.
Вы же сравниваете не содержимое, а указатели, а указатели различаются, о чем программа Вам и сообщает.
Да. Уже проверил - они одинаковы, Но LED матрица считав это значение всё равно выводит абракадабру =(
Никто не знает, что за LED-матрица у вас и каким образом вы на нее выводите тексты.
Пока что пытаюсь разобраться сам.
LED матрица - набор из 8 модулей 8x8 на MAX7219
на основе примера Parola_Duble_Height_v1_Russian (библиотеки MD_Parola и MD_MAX72xx) - всё же заработало. Но, не без костыля)