该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
/*
** 地址列表模块的声明
*/
/*
** 数据特征
**
** 各种数据的最大长度(包括结尾的NULL字节)和地址的最大数量。
*/
#define NAME_LENGTH 30 /*允许出现的最长名字*/
#define ADDR_LENGTH 100 /*允许出现的最长地址*/
#define PHONE_LENGTH 11 /*允许出现的最长电话号码*/
#define MAX_ADDRESSES 1000 /*允许出现的最多地址个数*/
/*
** 每个地址的三个部分,分别保存于三个数组的对应元素中
*/
static char name[MAX_ADDRESSES][NAME_LENGTH];
static char address[MAX_ADDRESSES][ADDR_LENGTH];
static char phone[MAX_ADDRESSES][PHONE_LENGTH];
/*
** 接口函数
*/
static int find_entry(char const * name_to_find,char const (*p1)[NAME_LENGTH]);
/*
** 给出一个名字,查找对应地址
*/
char const *lookup_address(char const * name,char const (*p)[NAME_LENGTH],char const (*address)[ADDR_LENGTH]);
/*
** 给出一个名字,查找对应电话号码
*/
char const *lookup_phone(char const *name,char const (*p)[NAME_LENGTH],char const (*phone)[PHONE_LENGTH]);
void main()
{
static char name[MAX_ADDRESSES][NAME_LENGTH] = {"sdah","liuwu","liuwei","awwfg","fefef"};
static char address[MAX_ADDRESSES][ADDR_LENGTH] = {"beijing","nanchang","nanchang","guangzhou","feizhou"};
static char phone[MAX_ADDRESSES][PHONE_LENGTH] = {"15170001506","15270001506","15870001526","1532454405","242895832"};
char *p1,*p2;
char nam[NAME_LENGTH];
/*
**输入一个人的名字
*/
puts("输入这个人的姓名:\n");
gets(nam);
p1 = lookup_address(nam,name,address);
p2 = lookup_phone(nam,name,phone);
/*
**如果没有这个人。。。。
*/
if(p1 == p2 == NULL)
puts("没有这个人的存在:\n");
/*
** 如果存在这个人则输出这个人的地址和电话
*/
else
{
puts("这个人的地址是:\n");
puts(p1);
puts("这个人的电话号码是:\n");
puts(p2);
}
}
/*
** 这个函数在数组中查找一个名字并返回查找到的位置下标。
** 如果这个在数组中并不存在,函数返回 -1 。
*/
static int find_entry(char const * name_to_find,char const (*p1)[NAME_LENGTH])
{
int entry;
for (entry = 0; entry < MAX_ADDRESSES;entry++)
if(strcmp(name_to_find,p1++)==0)
return entry;
return -1;
}
/*
**给定一个名字,查找并返回对应的地址,
**如果名字没有找到,函数返回一个NULL指针
*/
char const *lookup_address(char const * name,char const (*p)[NAME_LENGTH],char const (*address)[ADDR_LENGTH])
{
int entry;
entry = find_entry(name,p);
if(entry == -1)
return NULL;
else
return address[entry];
}
/*
**给定一个名字,查找并返回对应的电话号码,
**如果名字没有找到,函数返回一个NULL指针
*/
char const *lookup_phone(char const *name,char const (*p)[NAME_LENGTH],char const (*phone)[PHONE_LENGTH])
{
int entry ;
entry = find_entry(name,p);
if(entry == -1)
return NULL;
else
return phone[entry];
}