Вопрос по структурам
- Войдите на сайт для отправки комментариев
Вс, 03/09/2017 - 10:46
Всем здравствуйте.
Возникла нужда "разбирать по полочкам" символьный массив в 32 байта, для удобства сортировки и обращения было решено создать структуру и за счет нее сортировать данные.
Реализованна задача так, что имеется массив "буффер" в который поступает 32 байта, он копируется в структуру состоящую из char-ов и массивов. Это работает, структура заполняется. После чего в структуре эти данные легко менять и обрабатывать. Но что бы эти данные переслать мне нужно скопировать их из структуры обратно в массив "буффер" и сделать это красиво с помощью memcpy у меня не получается.
Может кто подскажет в чем ошибка, инфы по такому построению вопроса в учебниках не нашел.
char buff[32];
struct data
{
char s = '$';
char id[8];
char data[21]
};
data data_s;
void()
{
memcpy(&data_s, buff, 9); //работает
memcpy(&buff, data, 9); //не работает
}
/**/ //-------------------------------- struct stData { char s = '$'; char id[8]; char data[21]; }; void save(char *to, char *from) { unsigned int len = strlen(from); strncpy(to, from, len + 1); } //---Компоновка----------------------------- stData AAA; //---main----------------------------- int main() { init(); //setup() Serial.begin(9600); save(AAA.id , "12345"); save(AAA.data, "ThisIsData"); Serial.println(AAA.id ); Serial.println(AAA.data); for (;;) { //loop() } return 0; } /*Скетч использует 1490 байт (4%) памяти устройства. Всего доступно 30720 байт. Глобальные переменные используют 232 байт (11%) динамической памяти, оставляя 1816 байт для локальных переменных. Максимум: 2048 байт. */ПС: Вместо save() можно это strcpy()
Используй union, Luke.
char buff[32]; void() { memcpy(&data_s, buff, 9); //работает memcpy(&buff, data, 9); //не работает }