Не заметил такого. И где?
так неоднократно было сказано - строка 34
В новом варианте достаточно добавить два пробела, т.е. нужно выравнять длины строк, и проблема уходит.
ЗЫ: интрига, однако ))
И что не так со строкой №34?
Принимающий буфер длиннее исходного, так что копирование проходит нормально - в чужую память не залазит.
После этого в строке №43 скопированная строка отлично печатается. Так что не так со строкой №34? Нет в ней никакой ошибки. Если есть, скажите какая.
С учетом того, что без этой строки ошибки тоже нет, проблема таки в копировании памяти ))
строковый литерал по идее константа, а вы в нее пишете
Опишите строки как символьный массив - проблема исчезнет
char welcomeMessage[] = "TIE Fighter ECU standard mode!\r\n";
char serviceMessage[] = "TIE Fighter ECU service mode\r\n";
Или не копируйте сами строки, а копируйте только ссылку на нужный в какую-нить переменную.
Добавка
Вариант с копированием ссылки в #8 тоже неверный.
Не знаю, может быть, но после этого ломаются все println
, что бы они не печатали
Ладно, я пока удаляюсь, внятного описания ошибки (кроме “если убрать строку, то работает”), я пока не видел.
А
ну, конечно, а разве когда-то было по-другому?
Но дайте передохнуть. Я этот говнокод неделю рожал, а тут прям за час итоги Дайте насладиться!
Есть сильное подозрение, что знаете )))
Припоминаю вот этот ваш пост
и фразу от тудова
и ведь та же strcpy()
, и Serial.println()
… ))
снимаю шляпу, глюки очень красивые
ну так дайте народу три недели, может @Komandir подтянется
char welcomeMessage = (char *) "TIE Fighter ECU standard mode!\r\n";
char serviceMessage = (char *) "TIE Fighter ECU service mode\r\n";
Так не ломается. Потому что меняем именно строки, а не указатели.
Кстати, почему? Проблема-то уходит
Ну, как Вам сказать. Я ведь тоже так … достаточно жирный троль. Вот в процитированном Вами посте есть фраза:
А теперь сравните её вот с этим
Говорят, что "плюрализм в одной голове – это шизофрения". Может, она и есть?
потому что так вы переписываете единственный указатель на литерал
и он оказывается потерян
а не впендюриваем ли мы просто ноль по указателю (char *) “\r”
копируя строки?
и дальше трава не расти…
Строковый литерал это константа, переписывать его нельзя. Все остальное - зависит от компилятора и искать тут какие-то закономерности (имхо) - смысла не имеет.
Не серчай, я тока учусь на “Дарт Вейдер”