bsearch(3) Library Functions Manual bsearch(3) NOME bsearch - busca binaria em um array ordenado BIBLIOTECA Biblioteca C Padrao (libc, -lc) SINOPSE #include 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])); DESCRICAO A funcao 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 e especificado por tam. O conteudo do array deve estar em ordem crescente de acordo com a funcao de comparacao 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 numero 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 funcao bsearch() retorna um ponteiro para um membro correspondente do array, ou NULO se nenhuma correspondencia foi encontrada. Se houver varios elementos que correspondem a chave, o elemento retornado e nao especificado. ATRIBUTOS Para uma explicacao dos termos usados nesta secao, consulte attributes(7). +--------------------------------------------+---------------+---------+ |Interface | Atributo | Valor | +--------------------------------------------+---------------+---------+ |bsearch() | Thread safety | MT-Safe | +--------------------------------------------+---------------+---------+ PADROES C11, POSIX.1-2008. HISTORICO 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 #include #include #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 TAMBEM hsearch(3), lsearch(3), qsort(3), tsearch(3) TRADUCAO A traducao para portugues brasileiro desta pagina man foi criada por Paulo Cesar Mendes , Andre Luiz Fassone e Rafael Fontenelle . Esta traducao e uma documentacao livre; leia a Licenca Publica Geral GNU Versao 3 ou posterior para as condicoes de direitos autorais. Nenhuma responsabilidade e aceita. Se voce encontrar algum erro na traducao desta pagina de manual, envie um e-mail para a lista de discussao de tradutores . Linux man-pages 6.06 31 outubro 2023 bsearch(3)