Provided by: manpages-de-dev_0.10-1_all bug

BEZEICHNUNG

       bsearch - binäre Suche in einem sortierten Feld (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

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

       Der  Inhalt  des  Felds  sollte  gemäß  der  Vergleichsfunktion  compar
       aufsteigend  sortiert  sein.  Von  compar  wird erwartet, dass sie zwei
       Argumente verarbeitet. Das erste Argument verweist auf das  key-Objekt;
       das  zweite  auf  ein  Element  des Arrays. Der Rückgabewert sollte ein
       Integer kleiner, gleich oder größer  Null  sein,  je  nachdem,  ob  das
       key-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 key, ist nicht definiert, auf welches Element der
       Zeiger weist.

KONFORM ZU

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

BEISPIEL

       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(struct mi))

       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(Monate, Anz_von_Monaten, sizeof(struct mi), compmi);
           for (i = 1; i < argc; i++) {
               struct mi Schluessel, *res;
               Schluessel.Name = argv[i];
               res = bsearch(&Schluessel, Monate, Anz_von_Monaten,
                             sizeof(struct mi), 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  3.32  des  Projekts
       Linux-man-pages. Eine Beschreibung des Projekts und Informationen,  wie
       Fehler     gemeldet     werden     können,     finden     sich    unter
       http://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  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     <debian-l10n-
       german@lists.debian.org>.

                               1. November 2003                     BSEARCH(3)