#include <stdio.h>
#include <string.h>
#include <stdlib.h>
static int compare_function(const void* a, const void* b) {
return strcmp(*(const char**)a, *(const char**)b);
}
static int compare(const void* a, const void* b) {
const char* s1 = a;
const char* const* s2 = b;
return strcmp(s1, *s2);
}
int main()
{
const char* arr[] = { "abdc", "baz", "dav", "cd", "abcd", "b", "aa", "ab", "aab", "bbq", "a"};
int size = sizeof(arr) / sizeof(arr[0]);
qsort(arr, size, sizeof(const char*), compare_function);
for (int i = 0; i < size; i++)
printf("%s\n", arr[i]);
char tofind[] = "ab";
char** item = (char*)bsearch(tofind, arr, size, sizeof(arr[0]), compare);
if (item != NULL) {
printf("\nFound item = %s", *item);
}
else {
printf("\nItem = %s not found", tofind);
}
return 0;
}
/*
run:
a
aa
aab
ab
abcd
abdc
b
baz
bbq
cd
dav
Found item = ab
*/