Provided by: manpages-fr-dev_3.65d1p1-1_all bug

NOM

       qsort, qsort_r - Trier un tableau

SYNOPSIS

       #include <stdlib.h>

       void qsort(void *base, size_t nmemb, size_t size,
                  int (*compar)(const void *, const void *));

       void qsort_r(void *base, size_t nmemb, size_t size,
                  int (*compar)(const void *, const void *, void *),
                  void *arg);

   Exigences    de    macros    de   test   de   fonctionnalités   pour   la   glibc   (consultez
   feature_test_macros(7)) :

       qsort_r() : _GNU_SOURCE

DESCRIPTION

       La fonction qsort() trie un tableau contenant nmemb éléments de  taille  size.  L'argument
       base pointe sur le début du tableau.

       Le contenu du tableau est trié en ordre croissant, en utilisant la fonction de comparaison
       pointée par compar, laquelle est appelée avec deux arguments pointant  sur  les  objets  à
       comparer.

       La fonction de comparaison doit renvoyer un entier inférieur, égal, ou supérieur à zéro si
       le premier argument est respectivement considéré comme inférieur,  égal  ou  supérieur  au
       second. Si la comparaison des deux arguments renvoie une égalité (valeur de retour nulle),
       l'ordre des deux éléments est indéfini.

       La fonction qsort_r() est identique à qsort() si ce n'est que la fonction  de  comparaison
       compar  prend  un troisième argument. Un pointeur est passé à la fonction de comparaison à
       l'aide de arg. De cette façon, la fonction de comparaison n'a pas  besoin  d'utiliser  des
       variables  globales  à  passer  à  l'aide  d'arguments  arbitraires, et est par conséquent
       réentrante et sécurisée pour utiliser dans des threads.

VALEUR RENVOYÉE

       Les fonction qsort() et qsort_r() ne renvoient pas de valeur.

VERSIONS

       qsort_r() a été ajoutée à la glibc dans la version 2.8.

CONFORMITÉ

       La fonction qsort() est conforme à SVr4, 4.3BSD, C89 et C99.

NOTES

       alphasort(3) et versionsort(3) font partie des routines de bibliothèque utilisables  comme
       argument  compar  de  qsort().  Pour  comparer des chaînes de caractères C, la fonction de
       comparaison peut appeler strcmp(3), comme dans l'exemple ci-dessous.

EXEMPLE

       Pour un exemple d'utilisation, voir l'exemple de la page bsearch(3).

       Un autre exemple d'utilisation est le programme ci-dessous, qui trie les  chaînes  données
       sur la ligne de commande :

       #include <stdio.h>
       #include <stdlib.h>
       #include <string.h>

       static int
       cmpstringp(const void *p1, const void *p2)
       {
           /* Les arguments de cette fonction sont des « pointeurs de
              pointeurs sur des caractères », mais les arguments de
              strcmp(3) sont des « pointeurs sur des caractères », d'où
              le forçage de type et l'utilisation de l'astérisque */

           return strcmp(* (char * const *) p1, * (char * const *) p2);
       }

       int
       main(int argc, char *argv[])
       {
           int j;

           if (argc < 2) {
               fprintf(stderr, "Utilisation : %s <chaîne>...\n", argv[0]);
               exit(EXIT_FAILURE);
           }

           qsort(&argv[1], argc - 1, sizeof(char *), cmpstringp);

           for (j = 1; j < argc; j++)
               puts(argv[j]);
           exit(EXIT_SUCCESS);
       }

VOIR AUSSI

       sort(1), alphasort(3), strcmp(3), versionsort(3)

COLOPHON

       Cette  page  fait partie de la publication 3.65 du projet man-pages Linux. Une description
       du projet et des  instructions  pour  signaler  des  anomalies  peuvent  être  trouvées  à
       l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis    2010,    cette   traduction   est   maintenue   à   l'aide   de   l'outil   po4a
       <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du  projet
       perkamon <http://perkamon.alioth.debian.org/>.

       Christophe    Blaess    <http://www.blaess.fr/christophe/>   (1996-2003),   Alain   Portal
       <http://manpagesfr.free.fr/> (2003-2006). Nicolas  François  et  l'équipe  francophone  de
       traduction de Debian (2006-2009).

       Veuillez     signaler     toute     erreur     de     traduction     en     écrivant     à
       <debian-l10n-french@lists.debian.org>  ou  par  un  rapport  de  bogue   sur   le   paquet
       manpages-fr.

       Vous  pouvez  toujours  avoir  accès  à la version anglaise de ce document en utilisant la
       commande « man -L C <section> <page_de_man> ».

                                           8 mars 2012                                   QSORT(3)