Provided by: manpages-de-dev_4.15.0-9_all bug

BEZEICHNUNG

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

ÜBERSICHT

       #include <stdlib.h>

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

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 │
       └───────────────────────────────────────────────────────┴───────────────────────┴─────────┘

KONFORM ZU

       POSIX.1-2001, POSIX.1-2008, C89, 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>

       struct mi {
           int Index;
           char *Name;
       } 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" }
       };

       #define Anz_von_Monaten (sizeof(Monate)/sizeof(Monate[0]))

       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, Anz_von_Monaten, sizeof(Monate[0]), compmi);
           for (int i = 1; i < argc; i++) {
               struct mi Schluessel;
               struct mi *res;

               Schluessel.Name = argv[i];
               res = bsearch(&Schluessel, Monate, Anz_von_Monaten,
                             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)

KOLOPHON

       Diese Seite  ist  Teil  der  Veröffentlichung  5.13  des  Projekts  Linux-man-pages.  Eine
       Beschreibung  des  Projekts,  Informationen,  wie  Fehler gemeldet werden können sowie die
       aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die deutsche Übersetzung dieser Handbuchseite wurde von Jens Rohler  <jkcr@rohler.de>  und
       Martin Eberhard Schauer <Martin.E.Schauer@gmx.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⟩.

                                         27. August 2021                               BSEARCH(3)