Каков стандартный способ копирования двух структур, содержащих массивы 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);
ничего не печатает, потому что я освободил буфер.
Проблема с моими структурами заключается в том, что они больше, чем struct person
. Они содержат сотни указателей char, и я должен копировать каждый элемент один за другим.
Есть ли другой способ скопировать две структуры, содержащие массивы char без использования malloc
и strcpy
для каждого члена?