Присвоить строку в char []

Nya
Offline
Зарегистрирован: 05.02.2020
char ModePrev[5]; 	// 4 + 1 символ завершения строки
char Mode[5];		// 4 + 1 символ завершения строки

 if (!digitalRead(1)) 		Mode = "abcd"; // присваиваем значения
 else if (!digitalRead(2)) 	Mode = "efgh"; 
 else Mode = "    ";
  
    if (Mode != ModePrev) {  // сравниваем строки
			ModePrev = Mode; // присваиваем строке значение другой строки
			lcd.setCursor(5, 0);
			lcd.print(Mode);		// вывод строки
	}

Всё не работает. Как не используя класс String сделать это работающим?)

rkit
Offline
Зарегистрирован: 23.11.2016

strcpy

А сравнивают строки с помощью strcmp, а не так как у тебя.

Ну и вообще перекладывать строки из переменной в переменную не особо эффективно и в данном случае не нужно. Сделай переменную - число, и печатай строку по ней.

arduinec
Offline
Зарегистрирован: 01.09.2015

Nya пишет:
Как не используя класс String сделать это работающим?)

http://arduino.ru/forum/programmirovanie/etyud-rabota-s-char-strokami

Nya
Offline
Зарегистрирован: 05.02.2020

Скомпилировалось. Насчет переменной-числа я изначально хотел, но посчитал это лишний код писать.

С числом таки меньше обоих памятей используется.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

rkit пишет:

strcpy

А сравнивают строки с помощью strcmp, а не так как у тебя.

Ну и вообще перекладывать строки из переменной в переменную не особо эффективно и в данном случае не нужно. Сделай переменную - число, и печатай строку по ней.

Оффтопный вопрос:

В среде ардуино перегрузка операторов возможна? Кто-то пользуется, если возможно? Или это бессмысленно тут?

b707
Offline
Зарегистрирован: 26.05.2017

BOOM пишет:

В среде ардуино перегрузка операторов возможна? Кто-то пользуется, если возможно? Или это бессмысленно тут?

возможна.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Спасибо за ответ. Синтаксис как в классическом си?

sadman41
Offline
Зарегистрирован: 19.10.2016

Wiring - это и есть Си со специфическими библиотеками.

rkit
Offline
Зарегистрирован: 23.11.2016

Ардуино пишется на С++.

В С перегрузки нет. Это два весьма разных языка.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

BOOM пишет:

В среде ардуино перегрузка операторов возможна? 

А Вы никогда не замечали, что объекты типа String можно "складывать", чтобы вторая строка приклеилась в хвост первой?

BOOM пишет:

Синтаксис как в классическом си?

В классическом Си нет перегрузки. В "неклассическом" тоже нет :-(

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Приветствую всех!

Я грешен безграмотностью, поэтому прошу сильно не обижаться... На "чистом Си" никогда не писал, поэтому для меня "классический Си" это С++. Спасибо за замечание, учту на будущее.