Provided by: manpages-de-dev_4.21.0-2_all bug

BEZEICHNUNG

       bsearch - binäre Suche in einem sortierten Feld (Array)

BIBLIOTHEK

       Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT

       #include <stdlib.h>

       void *bsearch(const void Schlüssel[.groesse], const void Basis[.size * .nmemb],
                     size_t nmemb, size_t groesse,
                     int (*vergl)(const void [.groesse], const void [.groesse]));

BESCHREIBUNG

       Die Funktion bsearch() durchsucht ein Feld von nmemb Objekten nach Übereinstimmung mit dem
       Objekt, auf das Schlüssel zeigt. Basis zeigt auf das erste Objekt des Felds; groesse  legt
       die Größe der einzelnen im Feld enthaltenen Objekte fest.

       Der  Inhalt des Felds sollte gemäß der Vergleichsfunktion vergl aufsteigend sortiert sein.
       Von vergl wird erwartet, dass sie zwei Argumente verarbeitet. Das erste Argument  verweist
       auf  das  Schlüssel-Objekt; das zweite auf ein Element des Arrays. Der Rückgabewert sollte
       eine Ganzzahl kleiner, gleich oder größer Null sein, je nachdem, ob  das  Schlüssel-Objekt
       kleiner, gleich oder größer als das Element des Felds ist.

RÜCKGABEWERT

       Die  Funktion  bsearch() gibt einen Zeiger auf ein passendes Feldelement zurück oder NULL,
       wenn keine Übereinstimmung gefunden wurde. Gibt es  mehrere  Treffer  für  Schlüssel,  ist
       nicht definiert, auf welches Element der Zeiger weist.

ATTRIBUTE

       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.

       ┌───────────────────────────────────────────────────────┬───────────────────────┬─────────┐
       │SchnittstelleAttributWert    │
       ├───────────────────────────────────────────────────────┼───────────────────────┼─────────┤
       │bsearch()                                              │ Multithread-Fähigkeit │ MT-Safe │
       └───────────────────────────────────────────────────────┴───────────────────────┴─────────┘

STANDARDS

       POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.

BEISPIELE

       Das  folgende  Beispiel sortiert zuerst mittels qsort(3) ein Feld von Strukturen und sucht
       dann mit bsearch() nach dem gewünschten Element.

       #include <stdio.h>
       #include <stdlib.h>
       #include <string.h>

       #define ARRAY_SIZE(arr)  (sizeof((arr)) / sizeof((arr)[0]))

       struct mi {
           int         nr;
           const char  *Name;
       };

       static struct mi  Monate[] = {
           { 1, "Jan" }, { 2, "Feb" }, { 3, "Mar" }, { 4, "Apr" },
           { 5, "Mai" }, { 6, "Jun" }, { 7, "Jul" }, { 8, "Aug" },
           { 9, "Sep" }, {10, "Okt" }, {11, "Nov" }, {12, "Dez" }
       };

       static int
       compmi(const void *m1, const void *m2)
       {
           const struct mi *mi1 = m1;
           const struct mi *mi2 = m2;

           return strcmp(mi1->Name, mi2->Name);
       }

       int
       main(int argc, char *argv[])
       {
           qsort(Monate, ARRAY_SIZE(Monate), sizeof(Monate[0]), compmi);
           for (size_t i = 1; i < argc; i++) {
               struct mi Schluessel;
               struct mi *res;

               Schluessel.Name = argv[i];
               res = bsearch(&Schluessel, Monate, ARRAY_SIZE(Monate),
                             sizeof(Monate[0]), compmi);
               if (res == NULL)
                   printf("»%s«: unbekannter Monat\n", argv[i]);
               else
                   printf("%s: Monat #%d\n", res->Name, res->Index);
           }
           exit(EXIT_SUCCESS);
       }

SIEHE AUCH

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

ÜBERSETZUNG

       Die deutsche Übersetzung dieser Handbuchseite  wurde  von  Jens  Rohler  <jkcr@rohler.de>,
       Martin     Eberhard     Schauer    <Martin.E.Schauer@gmx.de>    und    Helge    Kreutzmann
       <debian@helgefjell.de> erstellt.

       Diese Übersetzung ist Freie Dokumentation;  lesen  Sie  die  GNU  General  Public  License
       Version  3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ oder neuer bezüglich der Copyright-
       Bedingungen. Es wird KEINE HAFTUNG übernommen.

       Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-
       Mail an die Mailingliste der Übersetzer ⟨debian-l10n-german@lists.debian.org⟩.