Latest web development tutorials

funzioni di libreria C - bsearch ()

C libreria standard - <stdlib.h> C libreria standard - <stdlib.h>

descrizione

funzioni di libreria Cvoid * bsearch (void const tasto * , const void * base, nitems size_t, size_t size, int (* Compar) (const void *, const void *)) di nitemsarray di oggetti per eseguirela ricerca binaria,punto base per essere Trova unarray,punto chiave per trovare glielementi, ladimensione specifica la dimensione di ciascun elemento della matrice.

Contenuto della matrice devono essere basate sul corrispondenteCompar funzione di confronto in ordine crescente.

dichiarazione

Ecco () funzione di dichiarazione bsearch.

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

parametri

  • chiave - puntatore a trovare il tipo di elemento per invalidare *.
  • Base - punto di effettuare una serie di puntatori per trovare il primo tipo di oggetto per invalidare *.
  • nitems - indicato il numero di elementi di base della matrice.
  • dimensione - la dimensione di ogni elemento della matrice, in byte.
  • Compar - Funzione utilizzata per confrontare due elementi.

Valore di ritorno

Se la ricerca ha successo, la funzione restituisce un puntatore a un puntatore a un array di elementi corrispondenti, altrimenti restituisce un puntatore nullo. .

Esempi

L'esempio seguente mostra viene utilizzata la 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;

   /* 使用 bsearch() 在数组中查找值 32 */
   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);
}

Facciamo compilare ed eseguire il programma di cui sopra, che si tradurrà in quanto segue:

Found item = 32

C libreria standard - <stdlib.h> C libreria standard - <stdlib.h>