Provided by: manpages-de-dev_0.5-4.1ubuntu1_all bug

BEZEICHNUNG

       bsearch - Binäre Suche in einem sortierten Array

ÜBERSICHT

       #include <stdlib.h>

       void *bsearch(const void *key, const void *base, size_t nmemb,
              size_t size, int (*compar)(const void *, const void *));

BESCHREIBUNG

       bsearch()  durchsucht  ein  Array mit einer Anzahl von nmemb Elementen,
       auf dessen erstes Element base zeigt, nach einem Element, das  mit  dem
       Objekt  übereinstimmt,  auf  das  key  zeigt.   Die Größe der einzelnen
       Elemente des Arrays ist durch size festgelegt.

       Der Inhalt des Arrays sollte  gemäß  der  Vergleichsfunktion,  auf  die
       compar  verweist,  aufsteigend sortiert sein.  Die Funktion compar muss
       zwei Argumente entgegennehmen.  Das erste Argument verweist auf key und
       das  zweite  auf ein Arrayelement.  Der Rückgabewert sollte ein Integer
       sein, der kleiner, gleich oder größer Null ist,  falls  das  key-Objekt
       kleiner, gleich oder größer als das Arrayelement ist.

RÜCKGABEWERT

       Die Funktion bsearch() gibt einen Zeiger auf ein passendes Arrayelement
       zurück, oder NULL wenn keine Übereinstimmung gefunden wurde.   Gibt  es
       mehrere  Elemente  die  auf  key passen, ist das zurückgegebene Element
       nicht spezifiziert.

BEISPIEL

       Das folgende Beispiel sortiert zuerst ein Array von Strukturen  mittels
       qsort(3), und sucht dann nach dem gewünschten Element mit 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);
            }
            return 0;
       }

KONFORM ZU

       SVID 3, 4.3BSD, ISO 9899 (C99)

SIEHE AUCH

       hsearch(3), lsearch(3), qsort(3), tsearch(3).

                                 12. März 2006                      BSEARCH(3)