//C++,WinXP操作系统,,VC6.0下编译通过。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct person
{
char last[16];
char first[11];
char phone[13];
int age;
};
static int comp(const void*, const void*);
main()
{
int i;
struct person *p;
static struct person key={"","","555-1965",0};
static struct person people[] =
{{"ford","henry","555-1903",98},
{"lincoln","abraham","555-1865",161},
{"ford","edsel","555-1965",53},
{"trump","donald","555-1988",49}};
//排序
qsort(people,4,sizeof people[0],comp);
//查找
p=(struct person *)bsearch(&key,people,4,sizeof people[0],comp);
if (p != NULL)
{
printf(
"%s,%s,%s,%d/n",
p->last,
p->first,
p->phone,
p->age
);
}
else
puts("Not found");
return 0;
}
/*比较函数,关键值是电话号码字段*/
static int comp(const void *x,const void *y)
{
struct person *p1=(struct person *)x;
struct person *p2=(struct person *)y;
return strcmp(p1->phone,p2->phone);
}