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.65 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> ».