|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité régulier
![]() Inscription : juillet 2008 Messages : 19 ![]() |
Bonsoir et bonne année à tous,
Je tiens à préciser que je débute donc si vous pouviez être indulgent avec mon pauvre code.... Je souhaite remplir un tableau avec des éléments de structure selon ce modèle : Code :
Fonctions.c Code :
Je souhaite entrer au fur et à mesure les éléments de type générique dans le tableau avec les données . Cependant le résultat de sortie ne me renvoie que des 0 (le calloc sans doute) à l'affichage. Merçi beaucoup de votre aide . Cordialement Bil'0x |
||||
|
|
00
|
|
|
#2 |
![]() ![]() Jérôme Inscription : septembre 2009 Messages : 5 167 ![]() |
Bonsoir,
Le problème est que tu travailles sur une copie et non le tableau[i] original dans Copie_elem_generique(), il te faudrait utiliser un pointeur Code :
Copie_elem_generique(element, &tableau[i]); Code :
generique Copie_elem_generique(generique S, generique *U) { ... }
Code :
tableau[i] = Copie_elem_generique(element /*, tableau[i] peu utile de le faire passer dans ce cas*/ ); |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : juillet 2008 Messages : 19 ![]() |
Oui merçi celà fonctionne
Mais je voudrais savoir si par exemple en faisant : tab[i] = element ; Je copie tous les champs cle, donnes , taille dans tab[i] ? D'après ta dernière ligne de code il semblerait que oui ou bien j'ai mal compris ? Merçi |
|
|
00
|
|
|
#4 |
![]() ![]() Jérôme Inscription : septembre 2009 Messages : 5 167 ![]() |
Seules les données statiques sont copiés. Autrement dit, tu ne recopies pas toutes les données du champ int *donnees;, mais seulement leur adresse.
|
|
|
00
|
|
|
#5 | ||||
|
Invité régulier
![]() Inscription : juillet 2008 Messages : 19 ![]() |
Ok , je comprends mais alors si je veux écrire une fonction échange correcte comment pourrais-je procéder ?
J'ai coder un truc mais après plusieurs test les résultats attendus ne collent pas . Code :
Mais là encore compte tenu de ta remarque précédente le code suivant qui consisterait à copier les éléments de type structure dans un autre tableau de même type ne fonctionnera pas ? (les données du champ int *donnees ne seront pas copiés mais uniquement les adresses ) Code :
|
||||
|
|
00
|
|
|
#6 | ||
![]() ![]() Jérôme Inscription : septembre 2009 Messages : 5 167 ![]() |
Pour effectuer l'échange de deux éléments du tableau, il n'y a pas besoin de ces fonctions de copie
Code :
Tu évites ainsi une copie inutile des valeurs des données en disant juste aux deux pointeurs respectifs d'aller pointer vers les données de l'autre élément du tableau. |
||
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : juillet 2008 Messages : 19 ![]() |
Oui mais lors de la compilation de mon code j'obtiens un beau segmentation fault à cause de cette foncion échange.
Meme en faisant sauter la fonction celà ne fonctionne pas. |
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Fred Enseignant Inscription : juillet 2006 Messages : 1 321 ![]() |
Comment exécutes-tu cette fonction Echange?
__________________
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein) |
|
|
00
|
|
|
#9 | ||
|
Invité régulier
![]() Inscription : juillet 2008 Messages : 19 ![]() |
Voici le code permettant son execution
Code :
|
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com