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