其实实现起来并不困难,只需要利用stdlib.h 中的qsort() 以及bsearch() 函数即可。但是需要注意有关二级指针的一些问题,否则就会卡上好久还不知道为什么出错(比如我-_-)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int cmp(const void *p1, const void *p2)
{
return strcmp(*(char **)p1, *(char **)p2);
}
int main()
{
char *a[] = {"Tom", "Lee", "Alice", "Albert", "Bob", "Borand"};
int len = sizeof(a) / sizeof(a[0]);
qsort(a, len, sizeof(a[0]), cmp);
for (int i = 0; i < len; i++)
printf("%s ", a[i]);
printf("\n");
char *target = "Bob";
char **p = (char **)bsearch(&target, a, len, sizeof(a[0]), cmp);
printf("%s's id: %d\n", *p, p - a);
}
输出结果如下:
Albert Alice Bob Borand Lee Tom
Bob's id: 2
|