Función de biblioteca C - bsearch ()

Descripción

La función de la biblioteca C void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *)) La función busca una matriz de nitems objetos, cuyo miembro inicial es apuntado por base, para un miembro que coincide con el objeto apuntado, por key. El tamaño de cada miembro de la matriz se especifica mediantesize.

El contenido de la matriz debe estar en orden ascendente según la función de comparación a la que hace referencia compar.

Declaración

A continuación se muestra la declaración de la función 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 es el puntero al objeto que sirve como clave para la búsqueda, tipificado como vacío *.

  • base - Este es el puntero al primer objeto de la matriz donde se realiza la búsqueda, tipificado como vacío *.

  • nitems - Este es el número de elementos en la matriz apuntados por base.

  • size - Este es el tamaño en bytes de cada elemento de la matriz.

  • compare - Esta es la función que compara dos elementos.

Valor devuelto

Esta función devuelve un puntero a una entrada en la matriz que coincide con la clave de búsqueda. Si no se encuentra la clave, se devuelve un puntero NULL.

Ejemplo

El siguiente ejemplo muestra el uso de la función 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);
}

Compilemos y ejecutemos el programa anterior que producirá el siguiente resultado:

Found item = 32