Bonsoir à tous,
Je tiens avant tout à m'excuser si je suis un peu amateur, je n'ai qu'une connaissance partielle et autodidacte du C !
Voilà, je suis obligé de travailler sur des tableaux de struct arbitraire, et j'ai essayé de bricoler quelques fonctions pour me faciliter la vie. Pour cela, j'ai défini
1 2 3 4 5 6
|
struct Tableau {
int size_array ; // nombre d'éléments dans le tableau
int size_item ; // taille en octets d'un élément
void * array ; // ARGH, je sais, mais j'ai pas le choix
} ; |
Tout marche bien (création dynamique, accès aux éléments, modification des éléments), sauf une fonction de tri que j'ai voulu implémenter :
struct Tableau tri_insertion(struct Tableau tab, int (*f)(const void *, const void *))
Où f pointe vers la relation d'ordre adaptée à la structure (oui, je suis habitué aux langages fonctionnels
).
Dans le contexte main, j'appelle tri_selection sur
{.size_array=5, .size_item=sizeof(int), .array //pointe vers le tableau {5,4,3,2,1} }
Néanmoins, le débogueur indique que dans le contexte de tri_selection, les valeurs de ma struct ont été complètement modifiées. Et je n'ai pas de stack overflow (ce qui ne veut rien dire, je sais).
Où ai-je fait une bêtise ? Merci d'avance !!!
Partager