Fonction de bibliothèque C - bsearch ()

La description

La fonction de bibliothèque C void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *)) fonction recherche un tableau de nitems objets dont le membre initial est pointé par base, pour un membre qui correspond à l'objet pointé, par key. La taille de chaque membre du tableau est spécifiée parsize.

Le contenu du tableau doit être trié par ordre croissant en fonction de la fonction de comparaison référencée par compar.

Déclaration

Voici la déclaration de la fonction bsearch ().

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

Paramètres

  • key - C'est le pointeur vers l'objet qui sert de clé pour la recherche, typé comme un void *.

  • base - Ceci est le pointeur vers le premier objet du tableau où la recherche est effectuée, type-casté comme un void *.

  • nitems - C'est le nombre d'éléments dans le tableau pointé par base.

  • size - Il s'agit de la taille en octets de chaque élément du tableau.

  • compare - C'est la fonction qui compare deux éléments.

Valeur de retour

Cette fonction renvoie un pointeur vers une entrée du tableau qui correspond à la clé de recherche. Si la clé n'est pas trouvée, un pointeur NULL est renvoyé.

Exemple

L'exemple suivant montre l'utilisation de la fonction 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);
}

Compilons et exécutons le programme ci-dessus qui produira le résultat suivant -

Found item = 32