我有一个结构:
struct data{
int num1;
int num2;
int num3;
int num4;
}
现在,我可以转换单个元素,然后将它们放入缓冲区,但我想将整个结构复制到缓冲区中(char buffer[sizeof(data)])。
有没有办法复制?
最佳答案
memcpy可以做到这一点
微软系统可以使用memcpy_s自动检查尺寸
您还需要注意 struct data
中的指针。
struct data {
int num1;
char* name;
}
char* name
指向的内存内容不会被memcpy复制。您将需要某种稍微复杂一点的序列化。
这是执行此操作的一些有效代码。它来回复制数据然后显示结果
struct data{
int num1;
int num2;
int num3;
};
int main(int argc, char** argv)
{
data my_data;
my_data.num1 = 64;
my_data.num2 = 65;
my_data.num3 = 66;
char buffer[20];
memcpy(buffer, &my_data, sizeof(data));
data copy_data;
memcpy(©_data, buffer, sizeof(data));
printf("the numbers : %d - %d - %d \n", copy_data.num1, copy_data.num2, copy_data.mum3);
return 0;
}
关于将结构复制到缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5589136/