Сдвиг значения в массиве.
- Войдите на сайт для отправки комментариев
Ср, 18/12/2019 - 20:09
Знающие люди, подскажите, что не так.
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);
}
}
и получаю вот такое

что не так? Спасибо.
А че не так? Строка 37 восстанавливает mas, его размер 15, а в строке 10 символов. Что смущает? Код честно отрабатывает что написано. А что вы хотели - ХЗ.
То, что я хотел написано выше. А просил объяснить, что не так во втором коде и почему первый двигает символы, а второй добивает нулями.
То, что я хотел написано выше. А просил объяснить, что не так во втором коде и почему первый двигает символы, а второй добивает нулями.
Вы писали в коде стр37?
Строка 37 восстанавливает mas
На каждом проходе. В размере 10 символов. Остальные 5 сдвигаются значением первого символа, т.е. 0.
Пишите четче что вы ожидали от кода. И особенно от стр. 37.
Спасибо. От 37 строки ожидал ОДИН раз заполнить массив данными строки.
То, что я хотел написано выше.
Ни фига не написано. Написано "усложняю пример". А чего хотели сделать-то?