Scroll to navigation

bsearch(3) Library Functions Manual bsearch(3)

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.

Schnittstelle Attribut Wert
bsearch() Multithread-Fähigkeit MT-Sicher

STANDARDS

C11, POSIX.1-2008.

GESCHICHTE

POSIX.1-2001, 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>
#define ARRAY_SIZE(arr)  (sizeof((arr)) / sizeof((arr)[0]))
struct mi {

int nr;
const char *name; }; static struct mi months[] = {
{ 1, "jan" }, { 2, "feb" }, { 3, "mär" }, { 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(months, ARRAY_SIZE(months), sizeof(months[0]), compmi);
for (size_t i = 1; i < argc; i++) {
struct mi key;
struct mi *res;
key.name = argv[i];
res = bsearch(&key, months, ARRAY_SIZE(months),
sizeof(months[0]), compmi);
if (res == NULL)
printf("'%s': unbekannter Monat\n", argv[i]);
else
printf("%s: Monat #%d\n", res->name, res->nr);
}
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 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.

20. Juli 2023 Linux man-pages 6.05.01