xtremejames183
Messages postés32Date d'inscriptionvendredi 26 mai 2006StatutMembreDernière intervention14 avril 2009
-
27 août 2007 à 02:56
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 2014
-
30 août 2007 à 14:27
voila le code marche impec si je veux ajouter des types primitives (int ,char..)
AddData(&list,(int *)6);
AddData(&List,(char *)"hello");
mais voila quand je veux ajouter une structure qui renferment plusieues valeur :
typede struct test
{
char *key,*value;
int code;
}Test;
AddData(&list,(void *)Test);
l'insertion est OK mais quand je veux acceder a la structure inserrer precedemment dans la liste j'obtient un erreur genre BAD-POINTER refernce pendant le run-time et autre conneries...
Ma question est :
Comment puis-je inserrer une structure dans un liste chaines et acceder apres a la structure inserrer avec une fonction de comparaison genre strcmp(list->key,data->key)?
dois-je utiliser memcpy pour copier bytes-per-bytes ou ...
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 30 août 2007 à 14:27
Salut,
AddData(&list,(void *)Test);
Ca, ça ne compilera pas vu que Test est un type.Je suppose que tu voulais dire :
Test monTest;
AddData(&list,(void *)monTest);
Mais là, que fais tu ? Tu convertis une structure monTest en void *...
Je crois que tu voulais faire ça plutôt : mettre en place l'adresse de ta structure dans ta liste chaînée:
Test monTest;
AddData(&list,(void *)&monTest);
Par contre, attention à ce que la structure ne soit pas détruite avant ta liste chaînée !