Допускается ли вместо String использовать char

Здравствуйте!

В массив m типа char некоторым образом добавляются символы.

Завершается массив добавлением символа /0

Допускается ли выводить в порт так: Serial.println(m);?

char m[20];
void setup()
{
Serial.begin(9600);
// Здесь заполнение массива
Serial.println(m);
}

void loop()
{

}

Попробовать пока не на чем.

Спасибо!

Да, конечно.

1 лайк

В #1

Скетч использует 1488 байт (4%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 208 байт (10%) динамической памяти, оставляя 1840 байт для локальных переменных. Максимум: 2048 байт.

А если так:

String s="";
void setup()
{
Serial.begin(9600);
s="12345678901234567890";
Serial.println(s);
}

void loop()
{

}

то вот так:

Скетч использует 2970 байт (9%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 224 байт (10%) динамической памяти, оставляя 1824 байт для локальных переменных. Максимум: 2048 байт.

Странный вопрос…
Я бы понял, если бы стпросили наоборот - допускается ли печатать String напрямую в порт…?
То что можно печатать char* - вроде бы очевидно, это ж базовый тип, не то что String

вы зарегились почти год назад… когда ж вы ардуину свою заведете? :slight_smile:

3 лайка

Внедрил еще в августе прошлого года. Сейчас она используется в моем проекте. А запасов пока нет.
Просто выясняю некоторые нюансы по C++.

за год увлечения ардуиной так и не выделили 150р на плату? :slight_smile:

а как этот вопрос связан с С++?

То что какая-то функция умеет выводить на печать данные char* или String - не является каким-то правилом или стандартом С++.
Как напишете функцию - так и будет.

Ну почему же? Сейчас ожидаю четыре платы.

И ещё вот это.

Для таких простых примеров есть онлайн-симуляторы. New Arduino Uno Project - Wokwi Simulator

1 лайк

А как Вы разместили на форуме это сообщение, если у Вас нет компьютера?

Компьютеров у меня два. У меня нет сводбодного МК. Если на нем пробовать #1 , то надо ломать какой-то действующий проект.

Нет. Завершающий ноль записан неправильно. Ни хрена так работать не будет.

Так запустите на одном из них симулятор и пробуйте всё, что Вам нужно!

\0

Вот так ОДИН РАЗ симулятор отработал так, как и ожидалось. Затем отказался работать.

 int i;
char m[20];
void setup()
{
  Serial.begin(9600);
  // Здесь заполнение массива
  for (i = 0; i = 10; i++) m[i] = 'a';
  m[i] = '\0';
  Serial.println(m);
}

void loop()
{

}

вот это что за условие в цикле? Надеюсь опечатка?

Там же
for (i = 0; i = 10; i++) m[i] = 'a';
Массив заполняется символом a

понятно… не опечатка.

Год обсуждений, вопросы про классы и указатели… а цикл FOR до сих пор не выучили.

Добавка
Давайте так - вы сами разберетесь, где в этой строке бред и подробно распишете, почему она не работает. Исправление на правильный код без обьяснений не принимается, искать в сети все умеют.

3 лайка

это потому что симулятор. Железная ардуина зависла бы сразу.

Не врите. Ни разу не получите вы вашего ааааа…

Да. Там опечатка. Там надо i<=10.

@MMM Хотелось, чтобы Вы отправили свой e-mail на georg-sk@mail.ru. Так как я не имею права отправлять Вам личные сообщения.

хотелось бы получить развернутое обьяснение, почему это ошибка и к чему она приводит.

Ну, для закрепления.

с целью?