Funzione libreria C - bsearch ()

Descrizione

La funzione di libreria C. void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *)) funzione cerca un array di nitems oggetti, il cui membro iniziale è indicato da base, per un membro che corrisponde all'oggetto puntato da key. La dimensione di ogni membro della matrice è specificata dasize.

Il contenuto della matrice deve essere in ordine crescente in base alla funzione di confronto a cui fa riferimento compar.

Dichiarazione

Di seguito è riportata la dichiarazione per la funzione bsearch ().

void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *))

Parametri

  • key - Questo è il puntatore all'oggetto che funge da chiave per la ricerca, digitato come vuoto *.

  • base - Questo è il puntatore al primo oggetto dell'array in cui viene eseguita la ricerca, cast di tipo come void *.

  • nitems - Questo è il numero di elementi nell'array puntati dalla base.

  • size - Questa è la dimensione in byte di ogni elemento dell'array.

  • compare - Questa è la funzione che confronta due elementi.

Valore di ritorno

Questa funzione restituisce un puntatore a una voce nella matrice che corrisponde alla chiave di ricerca. Se la chiave non viene trovata, viene restituito un puntatore NULL.

Esempio

Il seguente esempio mostra l'utilizzo della funzione 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);
}

Compiliamo ed eseguiamo il programma sopra che produrrà il seguente risultato:

Found item = 32