Сдвиг значения в массиве.

ak62
Offline
Зарегистрирован: 03.01.2019

Знающие люди, подскажите, что не так.

const int size_array  = 15;
byte mas[size_array] = {"0123456789"};
int i;
bool _print = true;

void setup() {

  Serial.begin(115200);

}

void loop() {
  //вывод в сериал всей исходной строки
  printOne();
  _print = false; // больше не надо выводить
  byte tmp;
  tmp = mas[0];
  for (int i = 0; i < size_array - 1; i++)
    mas[i] = mas[i + 1];
  mas[size_array - 1] = tmp;
  for (int i = 0; i < size_array; i++)
  {
    Serial.print(char (mas[i]));
  }
  Serial.println("");

  delay(1000);
}

void printOne()
{
  if (_print) {
    for (int i = 0; i < size_array; i++)
    {
      Serial.print(char (mas[i]));
    }
    Serial.println("");
    delay(1000);
  }
}

Получаю то, что хочу

немного усложняю задачу

const int size_array  = 15;
byte mas[size_array] = {"0123456789"};
int i;
bool _print = true;

//добавлю строку//////////////
String input_string = "0123456789";
///////////////////////////////

void setup() {

  Serial.begin(115200);

}

void loop() {
  //вывод в сериал всей исходной строки
  printOne();
  _print = false; // больше не надо выводить
  byte tmp;
  tmp = mas[0];
  for (int i = 0; i < size_array - 1; i++)
    mas[i] = mas[i + 1];
  mas[size_array - 1] = tmp;
  for (int i = 0; i < size_array; i++)
  {
    Serial.print(char (mas[i]));
  }
  Serial.println("");

  delay(1000);
}

void printOne()
{
  //отправлю ее в массив////////////
  input_string.getBytes(mas, size_array);
  //////////////////////////////////////
  if (_print) {
    for (int i = 0; i < size_array; i++)
    {
      Serial.print(char (mas[i]));
    }
    Serial.println("");
    delay(1000);
  }
}

и получаю вот такое

что не так? Спасибо.

Logik
Offline
Зарегистрирован: 05.08.2014

А че не так? Строка 37 восстанавливает mas, его размер 15, а в строке 10 символов. Что смущает? Код честно отрабатывает что написано. А что вы хотели - ХЗ.

ak62
Offline
Зарегистрирован: 03.01.2019

То, что я хотел написано выше. А просил объяснить, что не так во втором коде и почему первый двигает символы, а второй добивает нулями.

Logik
Offline
Зарегистрирован: 05.08.2014

ak62 пишет:

То, что я хотел написано выше. А просил объяснить, что не так во втором коде и почему первый двигает символы, а второй добивает нулями.

Вы писали в коде стр37? 

Logik пишет:

 Строка 37 восстанавливает mas

На каждом проходе. В размере  10 символов. Остальные 5 сдвигаются значением первого символа, т.е. 0.

Пишите четче что вы ожидали от кода. И особенно от стр. 37.

ak62
Offline
Зарегистрирован: 03.01.2019

Спасибо. От 37 строки ожидал ОДИН раз заполнить массив данными строки.

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

ak62 пишет:

То, что я хотел написано выше. 

Ни фига не написано. Написано "усложняю пример". А чего хотели сделать-то?