Provided by: manpages-fr-dev_2.64.1-1_all bug

NOM

       bsearch - Recherche dichotomique dans une table triée

SYNOPSIS

       #include <stdlib.h>

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

DESCRIPTION

       La  fonction  bsearch() recherche l’objet correspondant à key, dans une
       table de nmemb objets, commençant  à  l’adresse  base.  La  taille  des
       éléments de la table est indiquée dans size.

       Le contenu de la table doit être triée en ordre croissant par rapport à
       la fonction de comparaison référencée par  compar.  La  routine  compar
       doit  être  capable de recevoir deux arguments, le premier pointant sur
       l’objet key, et le second sur un  élément  de  la  table  (l’ordre  des
       arguments  est  toujours  respecté  par  bsearch).  Cette  routine doit
       retourner une  valeur  entière  respectivement  inférieure,  égale,  ou
       supérieure  à  zéro  si l’objet key est inférieur, égal, ou supérieur à
       l’élément de la table.

VALEUR RENVOYÉE

       La fonction bsearch() renvoie un  pointeur  sur  l’élément  du  tableau
       correspondant   à   celui  recherché,  ou  NULL  si  aucun  élément  ne
       correspond. Si plusieurs éléments de la table correspondent à  la  clé,
       celui qui est renvoyé n’est pas spécifié.

CONFORMITÉ À

       SVr4, BSD 4.3, POSIX.1-2001, C89, C99

EXEMPLE

       L’exemple  suivant  trie  d’abord un tableau de structures en utilisant
       qsort(3), puis retrouve les éléments désirés en utilisant bsearch().

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

       struct mi {
           int nr;
           char *name;
       } months[] = {
           { 1, "jan" }, { 2, "feb" }, { 3, "mar" }, { 4, "apr" },
           { 5, "may" }, { 6, "jun" }, { 7, "jul" }, { 8, "aug" },
           { 9, "sep" }, {10, "oct" }, {11, "nov" }, {12, "dec" }
       };

       #define nr_of_months (sizeof(months)/sizeof(months[0]))

       static int
       compmi(const void *m1, const void *m2)
       {
           struct mi *mi1 = (struct mi *) m1;
           struct mi *mi2 = (struct mi *) m2;
           return strcmp(mi1->name, mi2->name);
       }

       int
       main(int argc, char **argv)
       {
           int i;

           qsort(months, nr_of_months, sizeof(struct mi), compmi);
           for (i = 1; i < argc; i++) {
               struct mi key, *res;
               key.name = argv[i];
               res = bsearch(&key, months, nr_of_months,
                             sizeof(struct mi), compmi);
               if (res == NULL)
                   printf("’%s’: unknown month\n", argv[i]);
               else
                   printf("%s: month #%d\n", res->name, res->nr);
           }
           exit(EXIT_SUCCESS);
       }

VOIR AUSSI

       hsearch(3), lsearch(3), qsort(3), tsearch(3)

TRADUCTION

       Cette page de manuel a été traduite  et  mise  à  jour  par  Christophe
       Blaess  <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
       Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et  mise  à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
       francophone de traduction de Debian.

       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> ».

                               1er novembre 2003                    BSEARCH(3)