怎么把结构体里面的数据复制到一个数组里面

如题所述

可以类似BACNET_ADDRESS *P_dest[50];这样定义, 但要注意这样声明的是一个指针数组,即存50个BACNET_ADDRESS指针的数组,与你的需求不符。应该是直接定义BACNET_ADDRESS P_dest[50];这样P_dest中才能存储结构体
C语言中结构体不能直接整体赋值。
可以使用memcpy函数:
void *memcpy(void *dest, const void *src, size_t n);
其中dest就是需要赋值到的地址, src就是复制源, n是需要复制的字节数。
所以是 memcpy(&P_dest[i], &dest, sizeof(dest));

修正:好吧,又查了下C是支持结构体直接赋值的,但如果结构体中有指针,将是非常不安全的,不过就你的代码来看是没问题的。

你代码不能复制的原因是两者的类型不一致,就是最开始说的P_dest实际上是一个指针数组,而赋值时要把一个结构体赋值给指针导致的错误。只要改下P_dest的声明就成了。
温馨提示:答案为网友推荐,仅供参考
相似回答