user-0 提问: 课程设计中的问题

回复:
user: user-0
content: 问题在下方。。

user: user-1
content: 建议在必要位置设置断点，然后单步跟踪程序运行，观察变量变化情况与你期望的是否一致，分析原因

user: user-2
content: #include<stdio.h> #include<stdlib.h> #include<string.h>  #define LEN sizeof(struct list)  int n=0; struct list {     int num;     char name[20];     long tel;     char classify;     char email[50]; }list[200];  void save()//保存文件 {     FILE *fp;     int i;     if((fp=fopen("通讯录","wb"))==NULL)     {         printf("无法打开文件");         exit(0);     }     for(i=0;i<n;i++)         fwrite(&list[i],LEN,1,fp);      printf("保存成功\n");     fclose(fp); }  void creat()//增加联系人 {     int i,j;     printf("请输入信息，当输入姓名为end时停止录入\n");     for(i=0;;i++)     {         printf("姓名");         scanf("%s",list[i].name);         if(strcmp(list[i].name,"end")==0)         {system("cls");             break;}         printf("电话号码");         scanf("%ld",&list[i].tel);         printf("选择分类：Ａ办公类　Ｂ个人类　Ｃ商务类");         fflush(stdin);         getchar();    /* for '\n' */         scanf("%c",&list[i].classify);         printf("电子邮件");         fflush(stdin);         scanf("%s", list[i].email);         n=n+1;         list[i].num=n;         if (i > 0)         {             for(j=0;j<i;j++)                 if(strcmp(list[j].name,list[i].name)==0||(list[j].tel==list[i].tel))                 {                     printf("姓名和电话号码重复，请重新输入\n");                     n--;                     i--;                     break;                 }         }         if(n>15)         {             printf("存储空间已满，不能录入\n");system("pause");             return;         }     } } void show()//查看所有联系人 {     int i;      system("cls");     if(n==0)         printf("未输入数据！\n");     else printf("序号    姓名　　    电话号码　　　 分类　电子邮件\n");     for(i=0;i<n;i++)         printf("%d       %-12s%-15ld%-6c%s\n",list[i].num,list[i].name,list[i].tel,list[i].classify,list[i].email); } void search()//查找联系人 {     int i;     char sel;      printf("请选择要查找的分类：Ａ办公类　Ｂ个人类　Ｃ商务类");     getchar();    /* for '\n' */     scanf("%c", &sel);     printf("姓名　　    电话号码\n");     for(i=0;i<n;i++)         if(sel==list[i].classify)             printf("%-12s%-15ld\n",list[i].name,list[i].tel);  }  void repair()//修改联系人信息 {     int i,b;     char a[20];     char newname[20];     long newtel;     char newclassify;     char newemail[50];      printf("请输入要修改的姓名");     scanf("%s", a);     for(i=0;i<n;i++)     {         if(strcmp(a,list[i].name)==0)             break;     }     if (i >= n) {         printf("Can't find it!\n");         return;     }     printf("请选择修改的单项：１姓名２电话号码３分类４电子邮件");     scanf("%d", &b);     if(b==1)     {         printf("请输入新姓名");         scanf("%s",newname);         strcpy(list[i].name, newname);         printf("修改成功\n");     }     if(b==2)     {         printf("请输入新电话号码");         scanf("%ld", &newtel);         list[i].tel = newtel;         printf("修改成功");     }     if(b==3)     {         printf("请输入新分类");         getchar();         scanf("%c", &newclassify);         list[i].classify = newclassify;         printf("修改成功");     }     if(b==4)     {         printf("请输入新电子邮件");         scanf("%s",newemail);         strcpy(list[i].email,newemail);         printf("修改成功\n");     } }  void del()//删除联系人信息 {     int i,j,a;     int flag=0;     char delname[20];     printf("请输入要删除联系人的姓名");     scanf("%s", delname);     for(i=0;i<n;i++)     {         if(strcmp(delname,list[i].name)==0) {             a = i;             flag=1;         }     }     if(flag==1)     {         for(j=a;j < n - 1;j++)         {             list[j] = list[j+1];             /*                list[j].num=list[j+1].num;                strcpy(list[j].name,list[j+1].name);                list[j].tel=list[j+1].tel;                list[j].classify=list[j+1].classify;                strcpy(list[j].email,list[j+1].email);                */         }         n--;         printf("删除成功\n");     }     if(flag==0)     {         printf("未找到该联系人\n");         system("pause");         return;     } }  int main() {     int k;      while(1) {         printf("                    通讯录信息系统                    \n");         printf("                  请输入功能所对应的数字                 \n");         printf("|~~~~~~~~~~~~~~~~~~~~~~~~菜单~~~~~~~~~~~~~~~~~~~~~~|\n");         printf("|                  新增联系人信息(1)               |\n");         printf("|                查看所有联系人信息(2)             |\n");         printf("|                  查询联系人信息(3)               |\n");         printf("|                  修改联系人信息(4)               |\n");         printf("|                  删除联系人信息(5)               |\n");         printf("|                  保存联系人信息(6)               |\n");         printf("|~~~~~~~~~~~~~~~~~~~~退出系统(7)~~~~~~~~~~~~~~~~~~~|\n");         scanf("%d",&k);         switch(k)         {             case 1:             system("cls");             creat();             break;              case 2:             system("cls");             show();             system("pause");system("cls");             break;             case 3:             system("cls");             search();system("pause");system("cls");             break;             case 4:             system("cls");             repair();system("pause");system("cls");             break;             case 5:             system("cls");             del();system("pause");system("cls");             break;             case 6:             system("cls");             save();system("pause");system("cls");             break;             case 7:             {                 char a,b;                 system("cls");                 printf("确认退出？Ｙ／Ｎ\n");                 getchar();    /*for '\n' */                 scanf("%c",&a);                 if(a=='Y'||a=='y')                 {                     system("cls");                     printf("是否保存？Ｙ／Ｎ\n");                     getchar();    /*for '\n' */                     scanf("%c",&b);                     if(b=='Y'||b=='y')                     {                         save();                         exit(0);                     }                     if(b=='N'||b=='n')                     {                         exit(0);                     }                 }             }             break;             default : system("cls");                       printf("请输入1-7的数字！\n");         }     } } 参考一下吧  问题挺多的，代码风格个人感觉很不好，乱；不易阅读； 在你的基础上改了一下，将我发现的所有问题做了修改，测试暂时没问题，对比看一下吧

user: user-3
content: 不要用c用s也就是字符串 用c要清缓存区比较麻烦