gpt4 book ai didi

在 C 中复制两个包含 char 指针的结构

转载 作者:太空狗 更新时间:2023-10-29 16:40:17 25 4
gpt4 key购买 nike

复制两个包含字符数组的结构的标准方法是什么?

这是一些代码:

#include stdio.h>
#include string.h>
#include stdlib.h>

typedef struct {
char* name;
char* surname;
} person;

int main(void){
person p1;
person p2;

p1.name = (char*)malloc(5);
p1.surname = (char*)malloc(5);

strcpy(p1.name, "AAAA");
strcpy(p1.surname, "BBBB");

memcpy(&p2, &p1, sizeof(person));
free(p1.name);
printf("%s\n", p2.name);
return 0;
}

printf("%s\n", p2.name); 没有打印任何东西,因为我释放了缓冲区。

我的结构的问题是它们比结构 person 大。它们包含数百个字符指针,我必须一个一个地复制每个成员。

是否有另一种方法可以复制两个包含 char 数组的结构,而无需为每个成员使用 mallocstrcpy

最佳答案

你别无选择,只能自己提供复制功能:

void copy_person(person *dst, const person *src)
{
dst->name = malloc(strlen(src->name) + 1);
dst->surname = malloc(strlen(src->surname) + 1);
strcpy(dst->name, src->name);
strcpy(dst->surname, src->surname);
}

可能比这更详细:检查错误,将 strlen + strcpy 分解为辅助函数等。

这就是 C++ 中的复制构造函数的用途。

关于在 C 中复制两个包含 char 指针的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3307493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com