Provided by: manpages-es-dev_4.27.0-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

       C11, POSIX.1-2008.

HISTORIAL

       POSIX.1-2001, C89, 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  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.

Páginas de Manual de Linux 6.9.1                  15 Junio 2024                                       bsearch(3)