你这个代码的问题也太多了吧,有认真检查代码吗
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Call
{
char name[20];
int phone[20];
struct Call *next;
};
void getInput(struct Call *call);
void addPerson(struct Call **head);
struct Call *findPerson(struct Call *head);
void displayContacts(struct Call *head);
void printPerson(struct Call *call);
void changePerson(struct Call *head);
void delPerson(struct Call **head);
void getInput(struct Call *call)
{
printf("请输入姓名:");
scanf("%s",call->name);
printf("请输入电话:");
scanf("%d",call->phone);
}
void addPerson(struct Call **head)
{
//struct Call *call,*temp;
struct Call *call;
static struct Call *tail;
call=(struct Call *)malloc(sizeof(struct Call));
if(call==NULL)
{
printf("内存分配失败!\n");
exit(1);
}
getInput(call);
if(*head!=NULL)
{
tail->next=call;
call->next=NULL;
}
else
{
*head=call;
call->next=NULL;
}
tail=call;
}
struct Call *findPerson(struct Call *head)
{
struct Call *call;
char input[128];
call=head;
printf("请输入要查找的姓名:");
scanf("%s",input);
while(call!=NULL)
{
if(!strcmp(call->name,input)||call!=NULL)
{
break;
}
call=call->next;
}
return call;
}
void displayContacts(struct Call *head)
{
//struct Call *call;
struct Call *call = head;
int count=1;
while(call != NULL)
{
printf("第%d位联系人",count);
printf("姓名:%s\n",call->name);
//printf("电话:%d\n",call->phone);
printf("电话:%d\n", *call->phone);
call=call->next;
count++;
}
}
void printPerson(struct Call *call)
{
printf("姓名:%s",call->name);
//printf("电话:%d",call->phone);
printf("电话:%d", *call->phone);
}
void changePerson(struct Call *head)
{
struct Call *call;
call=findPerson(head);
if(call==NULL)
{
printf("找不到!\n");
}
else
{
printf("请输入新的号码:");
//scanf("%s",call->phone);
scanf("%d",call->phone);
}
}
void delPerson(struct Call **head)
{
struct Call *call;
//struct Call *temp;
struct Call *pre;
struct Call *current;
call=findPerson(*head);
if(call==NULL)
{
printf("没找到!\n");
}
else
{
current=*head;
pre=NULL;
while(current!=NULL&¤t!=call)
{
pre=current;
current=current->next;
}
if(pre==NULL)
{
*head=current->next;
}
else
{
pre->next=current->next;
}
free(call);
}
}
void releaseContacts(struct Call **head)
{
struct Call *temp;
while(head!=NULL)
{
temp=*head;
*head=(*head)->next;
free(temp);
}
}
//main(void)
int main(void)
{
struct Call *head=NULL;
struct Call *call;
int input;
printf("| 欢迎使用通讯录管理程序 |\n");
printf("|--- 1:插入新的联系人--- |\n");
printf("|--- 2:查找新的联系人--- |\n");
printf("|--- 3:更改新的联系人--- |\n");
printf("|--- 4:删除新的联系人--- |\n");
printf("|--- 5:显示新的联系人--- |\n");
printf("|--- 6:退出新的联系人--- |\n");
while(1)
{
printf("\n请输入代码指令:");
scanf("%d",&input);
switch(input)
{
case 1:addPerson(&head); break;
//case 2:findPerson(head);
case 2: call = findPerson(head);
if(call==NULL)
{
printf("找不到!\n");
}
else
{
printPerson(call);
}
break;
case 3:changePerson(head);break;
case 4:delPerson(&head);break;
case 5:displayContacts(head);break;
case 6:goto END;
}
}
END:
releaseContacts(&head);
return 0;
}
|