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, у Вас действительно две разных строки, расположенные по разным адресам, содержимое которых совпадает.
Вы же сравниваете не содержимое, а указатели, а указатели различаются, о чем программа Вам и сообщает.
void setup() { Serial.begin(115200); String stringVar="Тестовое сообщение"; char charVar2[]="Тестовое сообщение"; char charVar[stringVar.length()+1]; stringVar.toCharArray(charVar, sizeof(charVar)); Serial.print(strcmp(charVar, charVar2)); } void loop() { }Да. Уже проверил - они одинаковы, Но LED матрица считав это значение всё равно выводит абракадабру =(
Никто не знает, что за LED-матрица у вас и каким образом вы на нее выводите тексты.
Пока что пытаюсь разобраться сам.
LED матрица - набор из 8 модулей 8x8 на MAX7219
на основе примера Parola_Duble_Height_v1_Russian (библиотеки MD_Parola и MD_MAX72xx) - всё же заработало. Но, не без костыля)
String stringVar="Проверка"; char charVar[stringVar.length()+1]; stringVar.toCharArray(charVar, sizeof(charVar)); char str[100]; strcpy(str, charVar); strcat(str, " сложения"); message[1]=str;