Provided by: manpages-pt-br-dev_4.27.0-1_all bug

NOME

       bsearch - busca binária em um array ordenado

BIBLIOTECA

       Biblioteca C Padrão (libc, -lc)

SINOPSE

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

DESCRIÇÃO

       A  função bsearch() busca em um array de nmemb objetos, a partir do membro inicial apontado por base, por
       um membro que corresponde ao objeto apontado por chave. O tamanho de cada membro do array é  especificado
       por tam.

       O  conteúdo  do array deve estar em ordem crescente de acordo com a função de comparação referenciada por
       compar. Espera-se que a rotina compar tenha dois argumentos que apontam para o objeto  chave  e  para  um
       membro  do  array,  nesta  ordem,  e  deve retornar um número inteiro menor, igual ou maior que zero se o
       objeto chave for descoberto, respectivamente, como sendo menor que, igual a ou  maior  que  o  membro  do
       array.

VALOR DE RETORNO

       A  função  bsearch()  retorna  um  ponteiro  para  um  membro correspondente do array, ou NULO se nenhuma
       correspondência foi encontrada. Se houver vários elementos que correspondem à chave, o elemento retornado
       é não especificado.

ATRIBUTOS

       Para uma explicação dos termos usados nesta seção, consulte attributes(7).
       ┌─────────────────────────────────────────────────────────────────────────────┬───────────────┬─────────┐
       │ InterfaceAtributoValor   │
       ├─────────────────────────────────────────────────────────────────────────────┼───────────────┼─────────┤
       │ bsearch()                                                                   │ Thread safety │ MT-Safe │
       └─────────────────────────────────────────────────────────────────────────────┴───────────────┴─────────┘

PADRÕES

       C11, POSIX.1-2008.

HISTÓRICO

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

EXEMPLOS

       O exemplo abaixo primeiro classifica um array de estruturas usando qsort(3) e, em  seguida,  recupera  os
       elementos desejados usando 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);
       }

VEJA TAMBÉM

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

TRADUÇÃO

       A   tradução   para   português   brasileiro   desta  página  man  foi  criada  por  Paulo  César  Mendes
       <drpc@ism.com.br>, André Luiz Fassone <lonely_wolf@ig.com.br> e Rafael Fontenelle <rafaelff@gnome.org>.

       Esta tradução é uma documentação livre; leia a Licença Pública Geral GNU Versão 3 ou  posterior  para  as
       condições de direitos autorais.  Nenhuma responsabilidade é aceita.

       Se  você  encontrar  algum  erro  na  tradução  desta  página  de manual, envie um e-mail para a lista de
       discussão de tradutores.

Linux man-pages 6.9.1                             15 junho 2024                                       bsearch(3)