Монитор порта не отображает структуру из массивов char
- Войдите на сайт для отправки комментариев
Втр, 18/02/2020 - 21:43
Здравствуйте, уважаемые форумчане. Изучаю структуру. Не могу понять почему она не выводится в монитор порта (выводит кракозябру).
Использую Arduino Mega2560
Вот код
struct data { char a1[9]; char a2[7]; char a3[10]; char a4[3]; }; data d; void setup() { Serial.begin(115200); } void loop() { displayInfo(); } void displayInfo() { d.a1[9] = 12354323; d.a2[7] = 453235; d.a3[10] = 5643.2312; d.a4[3] = "AA"; for (int i = 0; i < sizeof(d); i++) { Serial.write(*((char*)&d+i)); } printdata(&d); Serial.println(); } void printdata(const void * v) { const data * d = (const data *) v; Serial.print(d->a1[9]); Serial.print(";"); Serial.print(d->a2[7]); Serial.print(";"); Serial.print(d->a3[10]); Serial.print(";"); Serial.print(d->a4[3]); } Монитор порта
ничего из этого не является типом char
А как правильнее тогда написать?
А как правильнее тогда написать?
Ну например
А как правильнее тогда написать?
элементы массива не копируются при присваивании массивов, чтобы присвоить массиву char значение "Hello!" после инициализации- нужно последовательно присвоить каждую букву строки каждому элементу массива:
но вообще, конечно, так никто не делает. Массивы либо инициализируются строкой сразу :
либо заполняются копированием при помощи функций библиотеки string
Спасибо, попробую
Получается нужно разбить каждый массив на отдельные элементы, присвоить значение а потом снова вместе собрать?
Получается нужно разбить каждый массив на отдельные элементы, присвоить значение а потом снова вместе собрать?
ПС: http://cppstudio.com/post/690/
Спасибо, изучу
Изменил я код программы, вроде получилось, но вылезло кое что другое (выводится два раза)
Tima123, книгу не читаем по регилиозным причинам. Мол нормальные русские пасаны засмеют и обзавут ботаном. Намекну все же почитайте про массивы, объявление и адрес последней ячейки
Пробовал разные варианты, в том числе и вместо strncpy использовал strcpy. Выводит тоже самое
Может перечитать программу и посмотреть, нет ли в ней случайно второго вывода?
Точно))). Огромное спасибо что заметили и подсказали.
Удалил это кусочек и все нормально.
Всем спасибо за помощь)