Provided by: manpages-fr_1.67.0-1_all bug

NOM

       bsearch - Recherche dichotomique dans une table triée.

SYNOPSIS

       #include <stdlib.h>

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

DESCRIPTION

       La  fonction  bsearch()  recherche l’objet correspondant à la cl, 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 cl, 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 cle 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 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é.

EXAMPLE

       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 no;
            char *nom;
       } mois[] = {
            { 1, "jan" }, { 2, "fév" }, { 3, "mar" }, { 4, "avr" },
            { 5, "mai" }, { 6, "jun" }, { 7, "jui" }, { 8, "aoû" },
            { 9, "sep" }, {10, "oct" }, {11, "nov" }, {12, "déc" }
       };

       #define nb_de_mois (sizeof(mois)/sizeof(mois[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->nom, mi2->nom);
       }

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

            qsort(mois, nb_de_mois, sizeof(struct mi), compmi);
            for (i = 1; i < argc; i++) {
                 struct mi key, *res;
                 key.nom = argv[i];
                 res = bsearch(&key, mois, nb_de_mois,
                            sizeof(struct mi), compmi);
                 if (res == NULL)
                      printf("’%s’ : mois inconnu\n", argv[i]);
                 else
                      printf("%s : mois N°%d\n", res->nom, res->no);
            }
            return 0;
       }

CONFORMITÉ

       SVID 3, BSD 4.3, ISO 9899

VOIR AUSSI

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

TRADUCTION

       Christophe Blaess, 1996-2003.