NOM¶
bsearch - Recherche dichotomique dans un tableau trié
SYNOPSIS¶
#include <stdlib.h>
void *bsearch(const void *key, const void *base,
size_t nmemb, size_t size,
int (*compar)(const void *, const void *));
DESCRIPTION¶
La fonction
bsearch() recherche l'objet correspondant à
key,
dans un tableau de
nmemb objets, commençant à l'adresse
base. La taille de chaque élément du tableau est
indiquée dans
size.
Le contenu du tableau doit être trié 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
key, et le second sur un élément
du tableau (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
key est inférieur, égal, ou supérieur à
l'élément du tableau.
VALEUR RENVOYÉE¶
La fonction
bsearch() renvoie un pointeur sur l'élément du
tableau correspondant à celui recherché, ou NULL si aucun
élément ne correspond. Si plusieurs éléments du tableau
correspondent à la clé, celui qui est renvoyé n'est pas
spécifié.
SVr4, BSD 4.3, POSIX.1-2001, C89, C99
EXEMPLE¶
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 nr;
char *name;
} months[] = {
{ 1, "jan" }, { 2, "feb" }, { 3, "mar" }, { 4, "apr" },
{ 5, "may" }, { 6, "jun" }, { 7, "jul" }, { 8, "aug" },
{ 9, "sep" }, {10, "oct" }, {11, "nov" }, {12, "dec" }
};
#define nr_of_months (sizeof(months)/sizeof(months[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->name, mi2->name);
}
int
main(int argc, char **argv)
{
int i;
qsort(months, nr_of_months, sizeof(struct mi), compmi);
for (i = 1; i < argc; i++) {
struct mi key, *res;
key.name = argv[i];
res = bsearch(&key, months, nr_of_months,
sizeof(struct mi), compmi);
if (res == NULL)
printf("'%s': unknown month\n", argv[i]);
else
printf("%s: month #%d\n", res->name, res->nr);
}
exit(EXIT_SUCCESS);
}
VOIR AUSSI¶
hsearch(3),
lsearch(3),
qsort(3),
tsearch(3)
COLOPHON¶
Cette page fait partie de la publication 3.44 du projet
man-pages Linux.
Une description du projet et des instructions pour signaler des anomalies
peuvent être trouvées à l'adresse
<
http://www.kernel.org/doc/man-pages/>.
TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
<
http://po4a.alioth.debian.org/> par l'équipe de traduction
francophone au sein du projet perkamon
<
http://perkamon.alioth.debian.org/>.
Christophe Blaess <
http://www.blaess.fr/christophe/> (1996-2003), Alain
Portal <
http://manpagesfr.free.fr/> (2003-2006). Florentin Duneau et
l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet
manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande «
man -L C
<section> <page_de_man> ».