Quelle est la méthode standard pour copier deux structures contenant des matrices de char?Copie de deux structures en C contenant des pointeurs char
Voici un code:
#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 ligne printf("%s\n", p2.name);
n'imprime pas quelque chose, parce que je libérais le tampon.
Le problème avec mes structures est qu'elles sont plus grandes que struct person
. Ils contiennent des centaines de pointeurs char, et je dois copier chaque membre un par un.
Existe-t-il un autre moyen de copier deux structures contenant des tableaux char sans utiliser malloc
et strcpy
pour chaque membre?
Comment fonctionne memcpy, si la mémoire n'est pas allouée pour p2, quelqu'un peut-il expliquer? Ne devrait-il pas jeter une exception au moment de l'exécution? – JagsVG
Vos structures contiennent * pointeurs *, pas * tableaux *. Vos pointeurs peuvent contenir l'adresse d'un tableau de char, mais si vous voulez que ce tableau soit copié, vous devez le gérer explicitement. –