#include <stdlib.h>
#include <stdio.h>
// void* bsearch( const void *key, const void *ptr, size_t count, size_t size,
// int (*comp)(const void*, const void*) );
struct DB {
int code;
char const *value;
} data[] = {
{1, "C"}, {2, "C++"}, {3, "Java"}, {4, "Python"}, {5, "C#"}
};
int compare(void const *ldb, void const *rdb) {
struct DB const *const l = ldb;
struct DB const *const r = rdb;
if (l->code < r->code) {
return -1;
}
else {
if (l->code > r->code) {
return 1;
}
}
return 0;
}
int main(void)
{
struct DB db = { .code = 3 };
struct DB const *result = bsearch(&db, data, sizeof data / sizeof data[0],
sizeof data[0], compare);
if (result) {
printf("found: %d: %s\n", result->code, result->value);
} else {
printf("not found\n");
}
}
/*
run:
found: 3: Java
*/