Provided by: manpages-fr-dev_4.27.0-1_all bug

NOM

       bsearch - Recherche dichotomique dans un tableau trié

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <stdlib.h>

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

DESCRIPTION

       La  fonction bsearch() recherche l'objet correspondant à key, dans un tableau de nmemb objets, commençant
       à l'adresse base. La taille de chaque élément du tableau est indiquée dans size.

       Le contenu du tableau doit être trié 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 du tableau  (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 du tableau.

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 du tableau correspondent à la clé, celui qui
       est renvoyé n'est pas spécifié.

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).
       ┌──────────────────────────────────────────────────────────────────────┬──────────────────────┬─────────┐
       │ InterfaceAttributValeur  │
       ├──────────────────────────────────────────────────────────────────────┼──────────────────────┼─────────┤
       │ bsearch()                                                            │ Sécurité des threads │ MT-Safe │
       └──────────────────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

STANDARDS

       C11, POSIX.1-2008.

HISTORIQUE

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

EXEMPLES

       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>

       #define ARRAY_SIZE(arr)  (sizeof((arr)) / sizeof((arr)[0]))

       struct mi {
           int         nr;
           const char  *name;
       };

       static struct mi  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" }
       };

       static int
       compmi(const void *m1, const void *m2)
       {
           const struct mi *mi1 = m1;
           const struct mi *mi2 = m2;

           return strcmp(mi1->name, mi2->name);
       }

       int
       main(int argc, char *argv[])
       {
           qsort(months, ARRAY_SIZE(months), sizeof(months[0]), compmi);
           for (size_t i = 1; i < argc; i++) {
               struct mi key;
               struct mi *res;

               key.name = argv[i];
               res = bsearch(&key, months, ARRAY_SIZE(months),
                             sizeof(months[0]), 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

       La  traduction  française   de   cette   page   de   manuel   a   été   créée   par   Christophe   Blaess
       <https://www.blaess.fr/christophe/>,   Stéphan   Rafin   <stephan.rafin@laposte.net>,   Thierry   Vignaud
       <tvignaud@mandriva.com>, François Micaux, Alain Portal  <aportal@univ-montp2.fr>,  Jean-Philippe  Guérard
       <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-luc.coulon@wanadoo.fr>,   Julien   Cristau
       <jcristau@debian.org>,     Thomas     Huriaux      <thomas.huriaux@gmail.com>,      Nicolas      François
       <nicolas.francois@centraliens.net>,     Florentin     Duneau    <fduneau@gmail.com>,    Simon    Paillard
       <simon.paillard@resel.enst-bretagne.fr>,    Denis    Barbier    <barbier@debian.org>,    David     Prévot
       <david@tilapin.org>,    Jean-Baptiste    Holcroft    <jean-baptiste@holcroft.fr>    et   Grégoire   Scano
       <gregoire.scano@malloc.fr>

       Cette traduction est une documentation libre ; veuillez vous  reporter  à  la  GNU General Public License
       version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si  vous  découvrez  un  bogue  dans la traduction de cette page de manuel, veuillez envoyer un message à
       debian-l10n-french@lists.debian.org.

Pages du manuel de Linux 6.9.1                    15 juin 2024                                        bsearch(3)