【发布时间】:2011-03-19 11:03:42
【问题描述】:
复制两个包含 char 数组的结构的标准方法是什么?
这里有一些代码:
#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 指针,我必须一个一个地复制每个成员。
是否有另一种方法可以复制两个包含 char 数组的结构,而不为每个成员使用 malloc 和 strcpy?
【问题讨论】:
-
memcpy 是如何工作的,如果没有为 p2 分配内存,谁能解释一下?它不应该在运行时抛出一些异常吗?
-
您的结构包含指针,而不是数组。你的指针可能包含一个 char 数组的地址,但是你想复制那个数组,你必须明确地管理它。