1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
   |  
int sort_function( const void *a, const void *b); // prototypage de ma fonction de tri.
 
struct personne // définition de la structure (en global)
{ char * nom;
   long age;
};
 
struct personne* liste[3]; // en global mon tableau
struct personne a1= {"isa",3}; 
struct personne a2= {"steph",33};
struct personne a3= {"fred",30};
 
int main (void)  // point d'entree
{
 liste[0]=&a1; // affectations
 liste[1]=&a2;
 liste[2]=&a3;
int i=0;
 
// affichage avant...
 for ( i = 0; i <3; i++)  printf("%d %s à %d\n",i, liste[i]->nom,liste[i]->age);
 printf("\n\n");
 
 qsort((void *)liste, 3, sizeof(liste[0]), sort_function);
 
// affichage apres
 for ( i = 0; i <3; i++)  printf("%d %s à %d\n",i, liste[i]->nom,liste[i]->age);
 
return 0;
}
 
//--- la fonction de tri.
int sort_function( const void *a, const void *b)
{
	// trie par age :
	struct personne* aa, *bb;
	aa=(struct personne*)a;
	bb=(struct personne*)b;
  //--return ((personne*)a)->age -  ((personne*)b)->age ;
 
	long aaa,bbb; // je detaille, marche pas mieux
	aaa=aa->age;
	bbb=bb->age;
	return aaa-bbb;
/*   
   // trie par nom :
   return  strcmp(((personne*)a)->nom,((personne*)b)->nom); 
/**/
} | 
Partager