lfind
Nach oben zu stdlib.h - Index
Header-Datei
stdlib.h
Kategorie
Routinen für Speicher- und String-Bearbeitung
Prototyp
void *lfind(const void *key, const void *base, size_t *num, size_t width, int (_USERENTRY *fcmp)(const void *, const void *));
Beschreibung
Führt eine lineare Suche durch.
lfind durchsucht ein Array sequenzieller Records nach dem Wert von key und verwendet dabei eine lineare Suche. Für den Vergleich wird die benutzerdefinierte Routine fcmp verwendet. Die Funktion fcmp muss mit der Aufrufkonvention _USERENTRY deklariert werden.
Das Array hat *num Records, die width Bytes groß sind, und beginnt an der Position im Speicher, auf die base zeigt.
Rückgabewert
lfind gibt die Adresse des ersten Records im Array zurück, der mit dem Suchschlüssel übereinstimmt. Wird keine Übereinstimmung gefunden, gibt lfind NULL zurück. Die Vergleichsroutine muss 0 zurückgeben, wenn *elem1 == *elem2, andernfalls einen Wert ungleich Null (elem1 und elem2 sind die beiden Parameter der Routine).
Beispiel
#include <stdio.h>
#include <stdlib.h>
int compare(int *x, int *y)
{
return( *x - *y );
}
int main(void)
{
int array[5] = {35, 87, 46, 99, 12};
size_t nelem = 5;
int key;
int *result;
key = 99;
result = (int *) lfind(&key, array, &nelem,
sizeof(int), (int(*)(const void *,const void *))compare);
if (result)
printf("Number %d found\n",key);
else
printf("Number %d not found\n",key);
return 0;
}
Portabilität
POSIX | Win32 | ANSI C | ANSI C++ |
---|---|---|---|
+ |