¿Cuál es la forma estándar de copiar dos estructuras que contienen matrices char?Copie dos estructuras en C que contengan punteros de char
Aquí hay un código:
#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;
}
La línea printf("%s\n", p2.name);
no imprime algo, porque liberó a la memoria intermedia.
El problema con mis estructuras es que son más grandes que struct person
. Contienen cientos de punteros de char, y tengo que copiar a cada miembro uno por uno.
¿Hay alguna otra manera de copiar dos estructuras que contienen matrices de caracteres sin usar malloc
y strcpy
para cada miembro?
¿Cómo funciona memcpy, si la memoria no está asignada para p2, ¿Alguien puede explicarlo? ¿No debería arrojar alguna excepción en el tiempo de ejecución? – JagsVG
Sus estructuras contienen * punteros *, no * matrices *. Sus punteros pueden contener la dirección de una matriz de caracteres, pero si desea que se copie esa matriz, debe gestionarla explícitamente. –