c/c++语言开发共享如何在C中复制struct数组

我已经定义了类似的结构

typedef struct { char *oidkey; int showperf; char oidrealvalue[BUFSIZE]; char *oidlimits; } struct_oidpairs; 

我有结构数组

  struct_oidpairs b[] ={{.....},....} 

我想将它复制到new struct array a[]

请帮忙

    像这样的东西:

     memcpy(dest, src, sizeof(struct) * sizeof(src)); 

    你的struct包含指针作为数据成员,这意味着你必须推出自己的复制函数,它将对指针做一些合理的事情。 memcpy只能工作,所有与struct相关的数据都存储在struct中。

    要获得内容的真实副本,请按照Sjoerd的回答,然后:

     for (i = 0; i < sizeof(src); i++) { if (src[i].oidkey != NULL) { dest[i].oidkey = malloc(strlen(src[i].oidkey) + 1); strcpy(dest[i].oidkey, src[i].oidkey); } if (src[i].oidlimits != NULL) { dest[i].oidlimits = malloc(strlen(src[i].oidlimits) + 1); strcpy(dest[i].oidlimits, src[i].oidlimits); } } 

    如果您对速度感兴趣,可以考虑使用memcpy。

    更新:

    不做深刻的复制:

     struct_oidpairs b[] = {...}; size_t len = sizeof b/sizeof*b; struct_oidpairs *a = malloc(sizeof b); if( !a ) /* ERROR handling */ memcpy( a, b, sizeof b ); ... free( a ); 

    要么

     while( len-- ) a[len] = b[len]; ... free( a ); 

    也许使用:

     for(int i=0; i 

      以上就是c/c++开发分享如何在C中复制struct数组相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/550175.html

      (0)
      上一篇 2021年1月14日
      下一篇 2021年1月14日

      精彩推荐