通讯录管理

a541345750 2010-06-20 09:01:43
求高手帮我看看,在哪出了问题,要如何修改。。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define LEN sizeof(struct linker)
typedef struct linker
{
char num;
char name[20];
int tel;
char sex;
char addr[11];
struct linker *next;
}link;
typedef link *linklist;
linklist head;
link *p;
linklist createlist(void)
{
linklist head=(link *)malloc(sizeof(LEN));
link *p,*rear;
int flog=0;
rear=head;//尾指针初始指向头结点
while(flog=0)
{
p=(link *)malloc(sizeof(LEN));
printf("编号 姓名 性别 电话 地址 \n");
scanf("%u%s%c%d%s",p->num,p->name,p->tel,p->sex,p->addr);
rear->next=p;//新结点接到尾结点之后
rear=p;//尾结点指向新结点
printf("结束建表吗?(1/0);");
scanf("%d",&flog);
}
rear->next=NULL;
return head;
}
void insert(linklist head,link *p)
{
link *p1,*p2;
p1=head;
p2=p1->next;
printf("编号 姓名 性别 电话 地址\n");
p=(link *)malloc(sizeof(link)); //申请新结点
scanf("%u%s%c%d%s",p->num,p->name,p->sex,
p->tel,p->addr);
while(p2!=NULL && strcmp(p2->num,p->num)<0)
{
p1=p2;
p2=p2->next;
}
p1->next=p;
p->next=p2;
}
search(linklist)
{
link *p;
int num[5];
char name[9];
int a;
printf("1:按编号查询 ");
printf("2:按姓名查询 ");
printf("请选择1或2:");
scanf("%d",&a);
p=head->next;
if(a==1)
{
printf("请输入你要查询的编号");
scanf("%d",num);
while(p&&strcmp(p->num,num)<0)
p=p->next;
if(p==NULL||strcmp(p->num,num)>0)
p=NULL;
}
else
if(a==2)
{
printf("请输入你要查找的姓名");
scanf("%s",name);
while(p&&strcmp(p->name,name)!=0)
p=p->next;
}
return p;
}
void delet(linklist head)
{
char n;
list *p,*q;
p=search(head);
if(p==NULL)
{
printf("没有查到要删除的通讯者!\n");
return 0;
}
printf("真的要删除该结点吗?(y/n):");
sacnf("%c",&n);
if(n=='y'||n=='y')
{
q=head;
while(q!=NULL&&q->next!=p)
q=q->next;
q->next=p->next;//删除结点
free(p);//释放结点空间
printf("通讯者已经被删除!\n");
}
}
void print(linklist head)
{
list *p;
p=head->next;
printf(" 编号 姓名 性别 电话 地址\n");
while(p!=NULL)
{
printf("%u%s%c%d%s",p->num,p->name,p->dsex,p->tel,p->addr);
p=p->next;
}
}
void main()
{
FILE *fp;
int choice;
char absorb;
printf(" ====通讯录管理==== ");
printf("------------------------");
printf(" 1: 建立通讯录 ")
printf(" 2: 插入通讯录信息 ");
printf(" 3: 查询通讯录信息 ");
printf(" 4: 删除通讯录信息 ");
printf(" 5: 输出通讯录信息 ");
printf(" 6: 退出通讯录 ");
printf("请在上述功能中选择数字0-6 ");
do
{
scanf("%d",&chioce);
scanf("%c",&absorb);
switch(choice)
{
case 1: l createlist; //链表建立
break;
case 2: insert(head,p); //添加一条新记录
break;
case 3: search(head); //查找记录,支持模糊查找
break;
case 4: delet(head); //删除一条记录
break;
case 5: print(head); //输出全部记录
break;
}
}
}
...全文
78 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
a541345750 2010-06-21
  • 打赏
  • 举报
回复
学习了。。。
看来要自己学会调试了
ForestDB 2010-06-21
  • 打赏
  • 举报
回复
帮顶。
lee673 2010-06-21
  • 打赏
  • 举报
回复
要学会该错误,学会调试
adooadoo 2010-06-21
  • 打赏
  • 举报
回复
while(flog=0)改成while(flog==0)
还有16个错误,楼主加油,我睡觉了。。。
KevinHo 2010-06-20
  • 打赏
  • 举报
回复
LZ,把报错贴出来,看看编译出了什么问题~~
xingqing_224 2010-06-20
  • 打赏
  • 举报
回复
这代码运行的时候是那的问题?不是有错误提示吗?
zhangzhongke007 2010-06-20
  • 打赏
  • 举报
回复
VS请按F10和F11单步跟踪调试。
durant 2010-06-20
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分
周靖峰 2010-06-20
  • 打赏
  • 举报
回复
貌似楼主的笔误太多了

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧