将结构复制到缓冲区

标签 c

我有一个结构:

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(&copy_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/

相关文章:

c - 在函数之间使用指针时出现段错误

c - Qt Creator纯C项目

c - 在 C 中解析 "file server commands"时遇到问题

C 结构返回指针,存储在引用中

c - SWIG typedef - 将数组返回给 Perl

c++ - 如何检查忍者并行构建的返回值?

c - 为什么这个条件会导致段错误?

c - 嵌套for循环以在c中制作圣诞树

c - 为什么C要在<math.h>中定义M_2_SQRTPI常量?

c - ndisasm手册中提到的二进制文件和可执行文件有什么区别?