lfind

Aus RAD Studio
Wechseln zu: Navigation, Suche

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++

+