如何将一个结构体复制到另一个结构体的数组中



我有两个结构:1)ABC 2)CDE

typedef struct
{
  unsigned char b[8];
  unsigned char a[12];
  unsigned char c;
} ABC;
ABC sABC;
typedef struct
{
  unsigned char D;
  unsigned char E[22];           
} CDE;

我想复制结构ABC到E[22],它是CDE结构体的成员。

如果有人知道这一点,那么我怎么能做到这一点?

您可以使用memcpy。例如,应该这样做:

memcpy(&some_CDE_variable.E, &sABC, 22);

但是要注意sizeof(ABC)可能不是22,并且如果编译器决定在内存中填充该结构体时添加一些填充,则其中的元素可能不会按照您期望的方式布局。如果你正在使用gcc,你可能需要检查packed属性。

您可以使用memcpy。

只是安全地使用memcpy,因为memcpy取代了内存,它不会追加。如果你想使用memcpy,你的代码需要稍微复杂一点。

void * memcpy (void * destination, const void * source, size_num);

还要注意这里的大小,因为num会因为填充而在编译器的基础上变化。

最新更新