LSEARCH |
Recherche linéaire |
---|---|
Turbo C | stdlib.h |
Syntaxe
void *lsearch(const void *key,const void *base,size_t nelem,size_t width,int (*compare)()); |
Paramètres
Nom | Description |
---|---|
key | Ce paramètre permet d'indiquer l'élément devant être recherché. |
base | Ce paramètre permet d'indiquer le tableau dans lequel la recherche doit être effectué à partir de l'élément 0. |
nelem | Ce paramètre permet d'indiquer le nombre d'élément que contient le tableau. |
width | Ce paramètre permet d'indiquer la taille en octets d'un élément du tableau. |
compare | Ce paramètre permet d'indiquer la fonction a utiliser pour la comparaison et doit retourner une valeur pour indiquer si les items sont inférieur, égale ou supérieur. |
Description
Cette fonction permet d'effectuer une recherche selon une méthode linéaire dans le tableau spécifié et si la valeur recherché n'est pas trouvé, elle l'ajoute à la fin du tableau.
Remarques
- La fonction lsearch recherche une table pour obtenir des informations. Comme il s'agit d'une recherche linéaire, les entrées de la table n'ont pas besoin d'être triées avant un appel à la fonction lsearch.
- Si l'élément vers lequel pointe la clef n'est pas dans le tableau, la fonction lsearch ajoute cet élément au tableau.
- Le paramètre compare pointe vers une routine de comparaison écrite par l'utilisateur, comparant deux éléments et renvoie une valeur basée sur la comparaison.
- Pour rechercher dans la table, la fonction lsearch fait des appels répétés à la routine dont l'adresse est passée dans compare.
- A chaque appel à la routine de comparaison, la fonction lsearch passe deux paramètres : key, un pointeur vers l'élément recherché; et elem, un pointeur vers l'élément de base comparé.
- Le paramètre compare est libre d'interpréter la clef de recherche et les entrées de la table de quelque manière que ce soit.
- La fonction lsearch renvoie l'adresse de la première entrée de la table correspondant à la clef de recherche.
- Si la clef de recherche n'est pas identique à *elem, le paramètre compare renvoie un entier différent de zéro. Si la clef de recherche est identique à * elem, le paramètre compare renvoie 0.
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
-
- #define NUM_ELEMENT_ARRAY 7
- #define STR_LENGTH 5
-
- char strvalues[][STR_LENGTH] = {"ABC","DEF","GHI","JKL","MNO","PQR","STU"};
-
- int main () {
- if(NULL != (char*)lsearch("DEF", strvalues, NUM_ELEMENT_ARRAY, STR_LENGTH, (int(*)(const void*,const void*)) strcmp)) {
- printf("DEF est dans le tableau.\n");
- } else {
- printf("DEF n'est pas trouvé dans le tableau.\n");
- }
- return 0;
- }
on obtiendra le résultat suivant :
DEF est dans le tableau.Voir également
Langage de programmation - Turbo C - Référence de fonctions - lfind
Langage de programmation - Turbo C - Référence de fonctions - bsearch
Dernière mise à jour : Samedi, le 4 juillet 2015