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.
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(Monate[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(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.42 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>.