bsearch(3) Library Functions Manual bsearch(3) BEZEICHNUNG bsearch - binare Suche in einem sortierten Feld (Array) BIBLIOTHEK Standard-C-Bibliothek (libc, -lc) UBERSICHT #include void *bsearch(const void Schlussel[.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 Ubereinstimmung mit dem Objekt, auf das Schlussel zeigt. Basis zeigt auf das erste Objekt des Felds; groesse legt die Grosse der einzelnen im Feld enthaltenen Objekte fest. Der Inhalt des Felds sollte gemass der Vergleichsfunktion vergl aufsteigend sortiert sein. Von vergl wird erwartet, dass sie zwei Argumente verarbeitet. Das erste Argument verweist auf das Schlussel-Objekt; das zweite auf ein Element des Arrays. Der Ruckgabewert sollte eine Ganzzahl kleiner, gleich oder grosser Null sein, je nachdem, ob das Schlussel-Objekt kleiner, gleich oder grosser als das Element des Felds ist. RUCKGABEWERT Die Funktion bsearch() gibt einen Zeiger auf ein passendes Feldelement zuruck oder NULL, wenn keine Ubereinstimmung gefunden wurde. Gibt es mehrere Treffer fur Schlussel, ist nicht definiert, auf welches Element der Zeiger weist. ATTRIBUTE Siehe attributes(7) fur eine Erlauterung der in diesem Abschnitt verwandten Ausdrucke. +--------------------------------+-------------------------+-----------+ |Schnittstelle | Attribut | Wert | +--------------------------------+-------------------------+-----------+ |bsearch() | Multithread-Fahigkeit | 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 gewunschten Element. #include #include #include #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, "mar" }, { 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) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Jens Rohler , Martin Eberhard Schauer und Helge Kreutzmann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.06 31. Oktober 2023 bsearch(3)