如何将一个结构复制到另一个结构元素的数组?

时间:2014-07-10 06:43:33

标签: c data-structures copy

我有两种结构: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;

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

如果有人知道这个,我该怎么做?

2 个答案:

答案 0 :(得分:0)

您可以使用memcpy执行此操作。例如,这样的事情应该有效:

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

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

答案 1 :(得分:0)

你可以在你的情况下使用memcpy。

只需安全地使用memcpy,因为memcpy会替换内存,它不会附加。如果你想使用memcpy,你的代码需要更复杂。

void * memcpy(void * destination,const void * source,size_t num);

另外,请注意这里的大小,因为填充符号会因编号而异。