Provided by: manpages-es-dev_4.18.1-1_all bug

NOMBRE

       bsearch - búsqueda binaria en un arreglo (array) ordenado

BIBLIOTECA

       Biblioteca Estándar C (libc, -lc)

SINOPSIS

       #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]));

DESCRIPCIÓN

       La función bsearch() busca en un arreglo de nmemb elementos, donde el primer elemento está
       apuntado por base, un elemento que coincida con el objecto apuntado por key. El tamaño  de
       cada elementos del arreglo es especificado por size.

       El  contenido  del  arreglo  debe  estar  ordenado en orden ascendente según la función de
       comparación referenciada por compar. Se espera que la rutina compar tenga  dos  argumentos
       que  apunten  al  objeto key y a un elemento del arreglo, en ese orden, y debe devolver un
       entero menor, igual o mayor que cero si resulta que el objeto key es menor, igual o  mayor
       (respectivamente) que el elemento del arreglo.

VALOR DEVUELTO

       La  función  bsearch() devuelve un puntero al elemento del arreglo que coincide, o NULL si
       no hay coincidencia. Si hay múltiples elementos que coinciden con la  clave,  el  elemento
       devuelto está sin determinar.

ATRIBUTOS

       Para obtener una explicación de los términos usados en esta sección, véase attributes(7).

       ┌────────────────────────────────────────────────┬────────────────────┬───────────────────┐
       │InterfazAtributoValor             │
       ├────────────────────────────────────────────────┼────────────────────┼───────────────────┤
       │bsearch()                                       │ Seguridad del hilo │ Multi-hilo seguro │
       └────────────────────────────────────────────────┴────────────────────┴───────────────────┘

ESTÁNDARES

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

EJEMPLOS

       The  example  below  first  sorts  an  array  of structures using qsort(3), then retrieves
       desired elements using 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);
       }

VÉASE TAMBIÉN

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

TRADUCCIÓN

       La traducción al español de esta página del  manual  fue  creada  por  Sebastian  Desimone
       <chipy@argenet.com.ar> y Juan Pablo Puerta <jppuerta@full-moon.com>

       Esta  traducción  es  documentación  libre;  lea  la  GNU General Public License Version 3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ o posterior con respecto a las condiciones  de
       copyright.  No existe NINGUNA RESPONSABILIDAD.

       Si  encuentra  algún  error  en  la  traducción de esta página del manual, envíe un correo
       electrónico a ⟨debian-l10n-spanish@lists.debian.org⟩.