我有两种结构: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结构的成员。
如果有人知道这个,我该怎么做?
答案 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);
另外,请注意这里的大小,因为填充符号会因编号而异。