"Fossies" - the Fresh Open Source Software archive 
#include <stdlib.h>
void *bsearch(const void *key, const void *base,
size_t nmemb, size_t size,
int (*compar)(const void *, const void *));
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.
#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("aq%saq: unbekannter Monat\n", argv[i]);
else
printf("%s: Monat #%d\n", res->Name, res->Index);
}
exit(EXIT_SUCCESS);
}
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>.