#include <stdlib.h> /*与malloc.h差不多*/
#include <string.h>
#define maxlen 100
strUCt persons
{ char name[10]; /*定义结构体数组用于缓存数据*/
char addr[20];
char phnum[10];
}persons[maxlen];
;
;
;
typedef struct lnode{ /*通讯录结构中结点的定义*/
char name[10]; /*姓名*/
char addr[20]; /*地址*/
char phnum[10]; /*电话*/
struct lnode *next;
}listnode,*linklist;
;
;
;
linklist head=NULL,r=NULL; /*定义头指针和尾指针*/
listnode *s,*p0,*p1,*p2,*p3,*p4,*p5,*p6,*p7;
int i;
char name1[10],ch;
char str1[20];
FILE *fp; /*定义文件指针*/
;
;
void creat() /*将文件的信息读入结构体数组在转存入链表中*/
{ int j;
long k;
fp=fopen("people.txt","r+t"); /*打开文件*/
if(fp!=NULL)
{for(i=1;i<maxlen;i++)
{ j=fgetc(fp);
if(j==EOF)
return;
k=i-1;
fseek(fp,k*sizeof(struct persons),0); /*读取一个人的信息*/
fread(&persons[i],sizeof(struct persons),1,fp);
s=(linklist)malloc(sizeof(listnode)); /*装存入链表中*/
strcpy(s->name,persons[i].name);
strcpy(s->addr,persons[i].addr);
strcpy(s->phnum,persons[i].phnum);
if(head==NULL) /*用尾插法将其插入链表中*/
head=s;
else
r->next=s;
r=s;}
}
else
{ fp=fopen("people.txt","w"); /*不能打开另开辟一个文件*/
i=1;
}
}
;
;
;
void Show() /*显示所有的信息*/
{ p1=head;
while(p1!=NULL)
{ printf(" name:%s ",p1->name);
printf(" addr:%s",p1->addr);
printf(" phnum:%s",p1->phnum);
p1=p1->next;
}
}
;
;
;
void Delete() /*定义一个删除的函数*/
{ printf(" please input the name:");
gets(name1); /*输入要删除人的姓名*/
p4=head;
if(strcmp(p4->name,name1)==0)
{ p4=p4->next; /*根据各种情况判定可能性*/
head=p4;
}
else
{ while(strcmp(p4->next->name,name1)!=0)
p4=p4->next;
p5=p4->next;
p4->next=p5->next;
free(p5);
} };
;
;
void Find() /*查找的函数定义*/
{ printf(" please input the name:");
p0=head;
gets(name1); /*查找人的姓名输入*/
while(strcmp(name1,p0->name)!=0&&p0!=NULL)
p0=p0->next;
if(p0==NULL)
printf(" It is not exit in the addr-book!");
else
{ printf(" name:%s ",p0->name);
printf(" addr:%s",p0->addr);
printf(" phnum:%s",p0->phnum);
}
}
;
;
;
void Input() /*向通讯录中输入一个人的信息*/
{ s=(linklist)malloc(sizeof(listnode));
pr
