Função da biblioteca C - bsearch ()
Descrição
A função da biblioteca C void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *)) função pesquisa uma matriz de nitems objetos, cujo membro inicial é apontado por base, para um membro que corresponde ao objeto apontado, por key. O tamanho de cada membro da matriz é especificado porsize.
O conteúdo da matriz deve estar em ordem crescente de classificação de acordo com a função de comparação referenciada por compar.
Declaração
A seguir está a declaração para a função bsearch ().
void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *))
Parâmetros
key - Este é o ponteiro para o objeto que serve como chave para a pesquisa, digitado como um vazio *.
base - Este é o ponteiro para o primeiro objeto da matriz onde a pesquisa é realizada, lançado como um vazio *.
nitems - Este é o número de elementos no array apontado por base.
size - Este é o tamanho em bytes de cada elemento da matriz.
compare - Esta é a função que compara dois elementos.
Valor de retorno
Esta função retorna um ponteiro para uma entrada na matriz que corresponda à chave de pesquisa. Se a chave não for encontrada, um ponteiro NULL é retornado.
Exemplo
O exemplo a seguir mostra o uso da função bsearch ().
#include <stdio.h>
#include <stdlib.h>
int cmpfunc(const void * a, const void * b) {
return ( *(int*)a - *(int*)b );
}
int values[] = { 5, 20, 29, 32, 63 };
int main () {
int *item;
int key = 32;
/* using bsearch() to find value 32 in the array */
item = (int*) bsearch (&key, values, 5, sizeof (int), cmpfunc);
if( item != NULL ) {
printf("Found item = %d\n", *item);
} else {
printf("Item = %d could not be found\n", *item);
}
return(0);
}
Vamos compilar e executar o programa acima que produzirá o seguinte resultado -
Found item = 32