我已经定义了类似的结构
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