我已经定义了像
这样的结构typedef struct {
char *oidkey;
int showperf;
char oidrealvalue[BUFSIZE];
char *oidlimits;
} struct_oidpairs;
我有结构数组
struct_oidpairs b[] ={{.....},....}
我希望将其复制到new struct array a[]
请帮助
答案 0 :(得分:2)
这样的事情:
memcpy(dest, src, sizeof(struct) * sizeof(src));
答案 1 :(得分:2)
你的struct包含指针作为数据成员,这意味着你必须推出自己的复制函数,它将对指针做一些合理的事情。 memcpy
仅适用于与结构相关的所有数据都存储在结构中。
答案 2 :(得分:1)
要获得内容的真实副本,请按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。
<强>更新强>
如果,此解决方案将崩溃
oidkey
或oidlimits
是!= NULL
而不是'\0'
{{1}} - 已终止表示未初始化
答案 3 :(得分:0)
不做深刻的复制:
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 );
答案 4 :(得分:-5)
也许正在使用:
for(int i=0; i<b.size() ;i++)
//I am not sure if this is the correct name for the size function
{
a[i]=b[i];
}