Date création : 27-03-2008 20:23:44
 Vous êtes dans : GNU/Linux Astuces / Pages man [Section3 - Sous-fonctions]
BSEARCH
Index
- NOM
- SYNOPSIS
- DESCRIPTION
- VALEUR RENVOYÉE
- EXEMPLE
- CONFORMITÉ À
- VOIR AUSSI
- TRADUCTION
NOM
bsearch - Recherche dichotomique dans une table triée
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 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
key, 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
key 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 du tableau
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é.
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
", argv[i]);
else
printf("%s: month #%d
", res->name, res->nr);
}
return 0;
}
CONFORMITÉ À
SVr4, BSD 4.3, POSIX.1-2001, C99
VOIR AUSSI
hsearch(3), lsearch(3), qsort(3), tsearch(3)
TRADUCTION
Cette page de manuel a été traduite et mise à jour par
Christophe Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003,
puis par Alain Portal <aportal AT univ-montp2 DOT fr> jusqu'en 2006.
La traduction de cette page de manuel est basée sur les traductions
disponibles sur http://manpagesfr.free.fr/,
mais est gérée par l'équipe francophone de traduction de Debian
au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction 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> ».
|