Provided by:
manpages-fr_1.67.0-1_all 
NOM
bsearch - Recherche dichotomique dans une table triée.
SYNOPSIS
#include <stdlib.h>
void *bsearch (const void *clé, const void *base, size_t nmemb,
size_t size, int (*compar)(const void *, const void *));
DESCRIPTION
La fonction bsearch() recherche l’objet correspondant à la clé, dans
une table de nmemb objets, commençant à l’adresse base. La taille des
éléments de la table est indiquée dans size.
Le contenu de la table doit être triée en ordre croissant par rapport Ã
la fonction de comparaison référencée par compar. La routine compar
doit être capable de recevoir deux arguments, le premier pointant sur
l’objet clé, et le second sur un élément de la table (l’ordre des
arguments est toujours respecté par bsearch). Cette routine doit
retourner une valeur entière respectivement inférieure, égale, ou
supérieure à zéro si l’objet cle est inférieur, égal, ou supérieur Ã
l’élément de la table.
VALEUR RENVOYÉE
La fonction bsearch() renvoie un pointeur sur l’élément correspondant Ã
celui recherché, ou NULL si aucun élément ne correspond. Si plusieurs
éléments de la table correspondent à la clé, celui qui est renvoyé
n’est pas spécifié.
EXAMPLE
L’exemple suivant trie d’abord un tableau de structures en utilisant
qsort(3), puis retrouve les éléments désirés en utilisant bsearch().
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct mi {
int no;
char *nom;
} mois[] = {
{ 1, "jan" }, { 2, "fév" }, { 3, "mar" }, { 4, "avr" },
{ 5, "mai" }, { 6, "jun" }, { 7, "jui" }, { 8, "aoû" },
{ 9, "sep" }, {10, "oct" }, {11, "nov" }, {12, "déc" }
};
#define nb_de_mois (sizeof(mois)/sizeof(mois[0]))
static int compmi(const void *m1, const void *m2) {
struct mi *mi1 = (struct mi *) m1;
struct mi *mi2 = (struct mi *) m2;
return strcmp(mi1->nom, mi2->nom);
}
int main(int argc, char **argv) {
int i;
qsort(mois, nb_de_mois, sizeof(struct mi), compmi);
for (i = 1; i < argc; i++) {
struct mi key, *res;
key.nom = argv[i];
res = bsearch(&key, mois, nb_de_mois,
sizeof(struct mi), compmi);
if (res == NULL)
printf("’%s’ : mois inconnu\n", argv[i]);
else
printf("%s : mois N°%d\n", res->nom, res->no);
}
return 0;
}
CONFORMITÉ
SVID 3, BSD 4.3, ISO 9899
VOIR AUSSI
hsearch(3), lsearch(3), tsearch(3), qsort(3)
TRADUCTION
Christophe Blaess, 1996-2003.