J'ai fait une copie superficielle d'une struct je de la manière suivante:membre flexible ne se copier quand je fais une copie superficielle d'une struct
struct Student{
char *name;
int age;
Courses *list; //First course (node)
Student *friends[]; //Flexible array member stores other student pointers
}Student;
void shallowCopy(const Student *one){
Student *oneCopy = malloc(sizeof(one) + 20*sizeof(Student*));
*oneCopy = *one; <--------------- ERROR POINTS TO THIS LINE
}
Quand je vérifie le premier élément du tableau souple membre oneCopy
, c'est null. Mais si je vérifie le premier élément du membre de tableau flexible dans la structure d'origine, il imprime le pointeur avec succès. Tous les autres composants de la structure d'origine sont copiés comme le nom et la liste chaînée. Seul le membre flexible du tableau n'est pas copié. Est-ce que quelqu'un sait ce que je fais mal?
Vous semblez manquer quelques pointeurs dans votre code. 'oneCopy' semble être' Student * oneCopy' et 'friends' semble être' Student * friends [] '. –
@MichaelAlbers Oui, vous avez raison, merci de l'avoir signalé. – Brandon
Comment connaissez-vous le nombre d'éléments dans le tableau des amis? Je m'attends à voir une valeur de compte comme un autre champ dans la structure de Student. – ash