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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
{.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 !!!