我有两个结构: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会因为填充而在编译器的基础上变化。