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>.