user-0 提问: 求助

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 修改如下，供参考：#include<stdio.h> #include<string.h> #include<stdlib.h> #include<windows.h>  typedef struct add {     char name[10]; //姓名     char home[5];  //籍贯     char phone[20];//电话     char zip[10];  //邮编     char email[20];//电子邮箱     add *next; }add;  add *head=NULL;   void input(); void inputdata(); void lokkdata();//查看数据函数 void find();//通过姓名查询数据 void update();//修改 void deleted();//删除数据   int main() {   int m,i=1;   while(i){         printf("---------通讯录管理系统菜单---------\n");         printf("1   显示数据 \n");         printf("2   输入数据\n");         printf("3   查询信息\n");          printf("4   修改数据\n");         printf("5   删除数据\n");         printf("6   退出系统\n");         scanf("%d",&m);         switch(m){                case 1:lokkdata();break;                case 2:inputdata();break;                case 3:find();break;                case 4:update();break;                case 5:deleted();break;//删除数据                case 6://exit(0);                default:i=0;break;         }         system("pause");         system("cls");   }   return 0; }  void input() {     add *p=NULL;     printf("姓名:%s\t", p->name);     printf("籍贯:%s\t", p->home);     printf("电话号码:%s\t",p->phone);     printf("邮编:%s\t", p->zip);     printf("电子邮箱:%s\n", p->email); }  void inputdata() {     add *h=NULL,*h_prv=NULL,*p=NULL;     if (head == NULL){         head=(add *)malloc(sizeof(add));//生成头节点         h_prv=h=head;         head->next=NULL;     }else{         for(h_prv=h=head;h->next!=NULL;h_prv = h,h=h->next);//找到节点尾部     }     printf("        输入数据\n");     while(1){           printf("\n在姓名处输入ok代表输入数据结束\n\n");           p=(add*)malloc(sizeof(add));//分配一个节点空间           printf("姓名:");           scanf ("%s",p->name);           if (strcmp(p->name,"ok")==0){               printf("\n输入完毕\n");               h = h_prv;      //退回上一节点               h->next = NULL;               free(p);               break;           }           printf("籍贯:");           scanf("%s",p->home);           printf("电话号码:");           scanf("%s",p->phone);           printf("邮编:");           scanf("%s",p->zip);           printf("电子邮箱:");           scanf("%s",p->email);           h->next = p;           h       = p;           h_prv   = h;  //记录上一节点     } }  void lokkdata()//查看数据函数 {   add *p = NULL;   if (head==NULL){       printf("此信息管理系统中无记录，请输入记录后再使用本功能！\n");       return;   }   printf("显示数据\n\n");   for (p=head->next;p!=NULL;p=p->next){       printf("姓名:%s\n",p->name);       printf("籍贯:%s\n",p->home);       printf("电话号码:%s\n",p->phone);       printf("邮编:%s\n",p->zip);       printf("电子邮箱:%s\n\n",p->email);   } }   void find()//通过姓名查询数据 {     add *p=NULL;     char name[10];     int b=0;     if (head==NULL){         printf("此信息管理系统中无记录，请输入记录后再使用本功能！\n");         return;     }     printf("      查看数据 \n");     printf("请输入你想查找人的姓名\n");     scanf ("%s",name);     for (p=head->next;p!=NULL;p=p->next){         if (strcmp(name,p->name)==0){             printf("\n你要找的数据\n");             printf("姓名:%s\n",p->name);             printf("籍贯:%s\n",p->home);             printf("电话号码:%s\n",p->phone);             printf("邮编:%s\n",p->zip);             printf("电子邮箱:%s\n\n",p->email);             b=1;             break;         }     }     if(b==0){         printf("你要查找联系人不存在\n");     } }  void update()//修改    {      add *p=NULL;      char name[10];      int b=0,i=0;      if (head==NULL){          printf("此信息管理系统中无记录，请输入记录后再使用本功能！\n");          return;      }      printf("修改数据\n");      printf("\n请输入将要修改人的姓名:");      scanf("%s",name);      for (p=head->next;p!=NULL;p=p->next){          if (strcmp(name,p->name)==0){              printf("该同学的基本信息\n");              printf("姓名:%s\n",p->name);              printf("籍贯:%s\n",p->home);              printf("电话号码:%s\n",p->phone);              printf("邮编:%s\n",p->zip);              printf("电子邮箱:%s\n",p->email);              printf("请选择要修改的信息:");              printf("1:姓名,2:籍贯,3:电话号码,4:邮编,5:电子邮箱\n");              printf("\n您的选择是(1-5)号:");              scanf("%d",&i);              printf("请输入修改之后的内容\n");              switch(i){                        case 1:printf("姓名:");                               scanf("%s",p->name);                               break;                        case 2:printf("籍贯:");                               scanf("%s",p->home);                               break;                        case 3:printf("电话号码:");                               scanf("%s",p->phone);                               break;                        case 4:printf("邮编:");                               scanf("%s",p->zip);                               break;                        case 5:printf("电子邮箱:");                               scanf("%s",p->email);                               break;              }              printf("\n修改成功!\n");              b=1;              break;          }      }      if(b==0){          printf("没有找到该人的资料!\n");      } }    void deleted()//删除数据 {         if (head==NULL){            printf("此信息管理系统中无记录，请输入记录后再使用本功能！\n");            return;         }         add *p=head->next,*pr=head->next;         char name[10];  //想要删除的人的姓名         if (head->next==NULL){             printf("内存空空神马都没有!\n");             printf("======================================================================\n");             return;         }         printf("删除数据\n");         printf("----------------------------------------------------------------------\n");         printf("请输入要删除的姓名:");         scanf("%s",name);          while ((strcmp(p->name,name)!=0 )&& p->next != NULL){              pr =p;              p =p->next;         }          if(strcmp(name,p->name)==0){             if(p == head->next) head->next = p->next;             else                pr->next   = p->next;             free(p);             printf("删除成功!\n");             printf("======================================================================\n");         }         else{            printf("此人不存在!\n");            printf("======================================================================\n");         } }

user: user-0
content: 引用 1 楼 自信男孩的回复:贴源码吧，方便给你调试～  #include<stdio.h>  #include<string.h>  #include<stdlib.h>  #include<windows.h>   typedef struct add   {  char name[10];     char home[5];     char zip[10];     char phone[20];     char email[20];     add *next;  }add ;   void* inputdata(); int main() {  int m;   printf("---------通讯录管理系统菜单---------\n");   printf("1   显示数据 \n");      printf("2   输入数据\n");         printf("3   查询信息\n");                  printf("4   修改数据\n");         printf("5   删除数据\n");         printf("6   返回主菜单\n");         scanf("%d",&m);         switch(m)         {         // case 1:input();break;          case 2:inputdata();break;   }   return 0;                } void input( add*p)  {  printf("姓名:%s\t", p->name);     printf("籍贯:%s\t", p->home);     printf("电话号码:%s\t", p->phone);     printf("邮编:%s\t", p->zip);     printf("电子邮箱:%s\n", p->email); }; void* inputdata() {   add *head;  add *p, *p1;  int i=1;  p=(add*)malloc(sizeof(add));//分配一个add所在大小空间，赋值给p   if(p!=NULL)  {    head=p1;    printf("1  输入数据\n");    printf("在姓名出输入ok代表输入数据结束\n");    while(i)    {      printf("姓名:");      scanf ("%s",&p->name);      if(strcmp(p->name,"ok")==0)     {        printf("\n输入完毕\n");        i=0;        p1->next=NULL;        //head(p);        p1=p;   }     else      {      printf("姓名");      scanf("%s",&p->name);      printf("籍贯");      scanf("%s",&p->home);      printf("电话号码");      scanf("%s",&p->phone);      printf("邮编");      scanf("%s",&p->zip);      printf("电子邮箱");      scanf("%s",&p->email);      p1=p;      p=(add*)malloc(sizeof(add));      if(p!=NULL)      {       p1->next=p;//p1的下一个数据体p    }    }    }     return(p->next);  }   } add *lokkdata(add*p)//查看数据函数 {   printf("显示数据\n");   while(p!=NULL)   {     printf("姓名:%s\n",&p->name);         printf("籍贯:%s\n",&p->home);     printf("电话号码:%s\n",&p->phone);     printf("邮编:%s\n",&p->zip);     printf("电子邮箱:%s\n",&p->email);     p=p->next;   }    return p; }     find(add*p1)//通过姓名查询数据   {    char name[10];    int b=0;    printf("查看数据\n");     printf("请输入你想查找人的姓名\n");     scanf ("%s",name);  while(p1!=NULL)    {      if(strcmp(name,p1->name)==0)    {     printf("你要找的数据\n");     printf("姓名:%s\n",&p1->name);         printf("籍贯:%s\n",&p1->home);     printf("电话号码:%s\n",&p1->phone);     printf("邮编:%s\n",&p1->zip);     printf("电子邮箱:%s\n",&p1->email);     b=1;      }    p1=p1->next;    }                         if(b==0)             {         printf("你要查找联系人不存在\n");   }     }      update(add*p1)//修改    {       char name[10];      int b=0,i;      printf("修改数据\n");      printf("请输入将要修改人的姓名:");      scanf("%s",name);      while(p1!=NULL)      {          if(strcmp(name,p1->name)==0)          {              printf("该同学的基本信息\n");              printf("姓名:%s\n",&p1->name);              printf("籍贯:%s\n",&p1->home);          printf("电话号码:%s\n",&p1->phone);          printf("邮编:%s\n",&p1->zip);          printf("电子邮箱:%s\n",&p1->email);           printf("请选择要修改的信息\n");              printf("手机号\n");              printf("\n您的选择是:手机号");              scanf("%d",&i);              printf("请输入修改之后的内容\n");              switch(i)                              {              case 1:printf("姓名:");                  scanf("%s",&p1->name);                  break;              case 2:printf("籍贯:");                  scanf("%s",p1->home);                  break;              case3 :printf("电话号码:");                  scanf("%s",&p1->phone);                  break;              case 4:printf("邮编:");                  scanf("%s",&p1->zip);                  break;              case 5:printf("电子邮箱:");         scanf("%s",&p1->email);                  break;                  }              printf("\n修改成功!\n");                            b=1;          }          p1=p1->next;           }             if(b==0)           {          printf("没有找到该人的资料!\n");      }  }       void deleted()          //删除数据     {  add *head;         add *p,*p1;        char name[10];  //想要删除的人的姓名         printf("删除数据\n");         printf("----------------------------------------------------------------------\n");         printf("请输入要删除的姓名:");         scanf("%s",name);         p=head;         if(head==NULL)         {         printf("内存空空神马都没有!\n");        printf("======================================================================\n");         return;       }         if(strcmp(name,p1->name)==0)        {         head=p->next;        printf("删除成功!\n");        printf("======================================================================\n");        return;         }        while(p!=NULL&&(strcmp(name,p1->name)!=0))        {         p1=p;        p=p->next;        }         if(p==NULL)         {         printf("此人不存在!\n");         printf("======================================================================\n");         return;         }         if(p->next!=NULL)         {         p=p->next;         p1->next=p;         printf("删除成功!\n");         printf("======================================================================\n");         return;         }         else         {         p1->next=NULL;         printf("删除成功!\n");         printf("======================================================================\n");         return;         }     }

user: user-0
content: 引用 5 楼 chxchxkkk的回复:1.c不支持 add *next这种写法，要写全 struct add *next; 2.input函数中没有给 p分配内存空间，主函数中也没有 3.有发截图的功夫，最好还是把源码贴出来，还能复制粘贴帮着调试一下，没人愿意照着截图敲代码 不好意思，不好意思。我把源码发给你

user: user-0
content: #include<stdio.h>  #include<string.h>  #include<stdlib.h>  #include<windows.h>   typedef struct add   {  char name[10];     char home[5];     char zip[10];     char phone[20];     char email[20];     add *next;  }add ;   void* inputdata(); int main() {  int m;   printf("---------通讯录管理系统菜单---------\n");   printf("1   显示数据 \n");      printf("2   输入数据\n");         printf("3   查询信息\n");                  printf("4   修改数据\n");         printf("5   删除数据\n");         printf("6   返回主菜单\n");         scanf("%d",&m);         switch(m)         {         // case 1:input();break;          case 2:inputdata();break;   }   return 0;                } void input( add*p)  {  printf("姓名:%s\t", p->name);     printf("籍贯:%s\t", p->home);     printf("电话号码:%s\t", p->phone);     printf("邮编:%s\t", p->zip);     printf("电子邮箱:%s\n", p->email); }; void* inputdata() {   add *head;  add *p, *p1;  int i=1;  p=(add*)malloc(sizeof(add));//分配一个add所在大小空间，赋值给p   if(p!=NULL)  {    head=p1;    printf("1  输入数据\n");    printf("在姓名出输入ok代表输入数据结束\n");    while(i)    {      printf("姓名:");      scanf ("%s",&p->name);      if(strcmp(p->name,"ok")==0)     {        printf("\n输入完毕\n");        i=0;        p1->next=NULL;        //head(p);        p1=p;   }     else      {      printf("姓名");      scanf("%s",&p->name);      printf("籍贯");      scanf("%s",&p->home);      printf("电话号码");      scanf("%s",&p->phone);      printf("邮编");      scanf("%s",&p->zip);      printf("电子邮箱");      scanf("%s",&p->email);      p1=p;      p=(add*)malloc(sizeof(add));      if(p!=NULL)      {       p1->next=p;//p1的下一个数据体p    }    }    }     return(p->next);  }   } add *lokkdata(add*p)//查看数据函数 {   printf("显示数据\n");   while(p!=NULL)   {     printf("姓名:%s\n",&p->name);         printf("籍贯:%s\n",&p->home);     printf("电话号码:%s\n",&p->phone);     printf("邮编:%s\n",&p->zip);     printf("电子邮箱:%s\n",&p->email);     p=p->next;   }    return p; }     find(add*p1)//通过姓名查询数据   {    char name[10];    int b=0;    printf("查看数据\n");     printf("请输入你想查找人的姓名\n");     scanf ("%s",name);  while(p1!=NULL)    {      if(strcmp(name,p1->name)==0)    {     printf("你要找的数据\n");     printf("姓名:%s\n",&p1->name);         printf("籍贯:%s\n",&p1->home);     printf("电话号码:%s\n",&p1->phone);     printf("邮编:%s\n",&p1->zip);     printf("电子邮箱:%s\n",&p1->email);     b=1;      }    p1=p1->next;    }                         if(b==0)             {         printf("你要查找联系人不存在\n");   }     }      update(add*p1)//修改    {       char name[10];      int b=0,i;      printf("修改数据\n");      printf("请输入将要修改人的姓名:");      scanf("%s",name);      while(p1!=NULL)      {          if(strcmp(name,p1->name)==0)          {              printf("该同学的基本信息\n");              printf("姓名:%s\n",&p1->name);              printf("籍贯:%s\n",&p1->home);          printf("电话号码:%s\n",&p1->phone);          printf("邮编:%s\n",&p1->zip);          printf("电子邮箱:%s\n",&p1->email);           printf("请选择要修改的信息\n");              printf("手机号\n");              printf("\n您的选择是:手机号");              scanf("%d",&i);              printf("请输入修改之后的内容\n");              switch(i)                              {              case 1:printf("姓名:");                  scanf("%s",&p1->name);                  break;              case 2:printf("籍贯:");                  scanf("%s",p1->home);                  break;              case3 :printf("电话号码:");                  scanf("%s",&p1->phone);                  break;              case 4:printf("邮编:");                  scanf("%s",&p1->zip);                  break;              case 5:printf("电子邮箱:");         scanf("%s",&p1->email);                  break;                  }              printf("\n修改成功!\n");                            b=1;          }          p1=p1->next;           }             if(b==0)           {          printf("没有找到该人的资料!\n");      }  }       void deleted()          //删除数据     {  add *head;         add *p,*p1;        char name[10];  //想要删除的人的姓名         printf("删除数据\n");         printf("----------------------------------------------------------------------\n");         printf("请输入要删除的姓名:");         scanf("%s",name);         p=head;         if(head==NULL)         {         printf("内存空空神马都没有!\n");        printf("======================================================================\n");         return;       }         if(strcmp(name,p1->name)==0)        {         head=p->next;        printf("删除成功!\n");        printf("======================================================================\n");        return;         }        while(p!=NULL&&(strcmp(name,p1->name)!=0))        {         p1=p;        p=p->next;        }         if(p==NULL)         {         printf("此人不存在!\n");         printf("======================================================================\n");         return;         }         if(p->next!=NULL)         {         p=p->next;         p1->next=p;         printf("删除成功!\n");         printf("======================================================================\n");         return;         }         else         {         p1->next=NULL;         printf("删除成功!\n");         printf("======================================================================\n");         return;         }     }

user: user-3
content: 1.c不支持 add *next这种写法，要写全 struct add *next; 2.input函数中没有给 p分配内存空间，主函数中也没有 3.有发截图的功夫，最好还是把源码贴出来，还能复制粘贴帮着调试一下，没人愿意照着截图敲代码

user: user-2
content: find()函数未声明，怎么调用呢？在14行只声明了一个inputdata()函数。 建议把代码贴上来。

user: user-4
content: find()没定义

user: user-4
content: 数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633

user: user-5
content: 贴源码吧，方便给你调试～