怀新又逢旧 2021-07-04 14:29 采纳率: 100%
浏览 35
已采纳

求调试一下,并找出问题!!!用的是c语言。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#define M 50
typedef struct
{
char name[20];
char units[20];
char tele[20];
char add[20];
}ADDRESS;
/主函数/
void main()
{
ADDRRESS adr[M];
int length;
for(;;)
{
switch(menu_select())
{
case 0:length=enter(adr);break;
case 1:list(adr,length);break;
case 2:search(adr,length);break;
case 3:display(adr);break;
case 4:length=del(adr,length);break;
case 5:length=add(adr,length);break;
case 6:sort(adr,length);break;
case 7:exit(0);
}
}
}
/菜单函数/
menu_melect()
{
char s[80];
int c;
printf("按任意键继续............\n");
printf("MENU*\n");
printf("0. Enter record /输入记录/\n");
printf("1. List the file /显示全部记录/\n");
printf("2. Search record on name /查找记录/\n");
printf("3. display record on order /按序号显示记录/\n");
printf("4. Delete a record /删除记录/\n");
printf("5. add record /插入记录/\n");
printf("6. sort by name /按姓名排序/\n");
printf("7. Quit /退出/\n");
printf("*********************************************\n");
do
{
printf("\n Enter you choice(0~7):");
scanf("%s",&s);
c=atoi(s);
}while (c<0||c>7);
return c;
}
/输入记录函数/
int enter(ADDRESS t[])
{
int i, n;
printf("\n 请输入选项:\n");
scanf("%d",&n);
printf("请输入记录:\n");
printf("姓名 单位 联系电话 家庭地址\n");
printf("---------------------------------------\n");
for(i=0;i<n;i++)
{
scanf("%s%s%s%s",t[i].name,t[i].units,t[i].tele,t[i].add);
printf("-------------------------------------\n");
}
return n;
}
/*显示记录函数*/
void list(ADDRESS t[], int n)
{
int i;
printf("\n\n*****************************************\n");
printf("姓名 单位 联系电话 家庭地址\n");
printf("----------------------------------------------\n");
for(i=0;i<n;i++)
printf("%-20s%-30s%-10s%-20s\n",t[i].name,t[i].units,t[i].tele,t[i].add);
if((i+1)%10==0)
{
printf("按任意键继续......\n");
}
printf("*****************end*************************\n");
}
/*查找记录函数*/
void search(ADDRESS t[],int n)
{
char s[20];
int i;
printf("请输入查找的姓名:\n");
scanf("%s",s);
i=find(t,n,s);
if(i>n-1)
printf("无法找到该用户\n");
else
print(t[i]);
}
/按序号显示记录函数/
void display(ADDRESS t[])
{
int id,n;
FILE *fp;
if((fp=fopen("c:\record.txt","rb"))==NULL)
{
printf("无法打开此文件\n");
exit(1);
}
printf("Enter order name....");
scanf("%d",&id);
fscanf(fp,"%d",&n);
if(id>=0&&id<n)
{
fseek(fp,(id-1)*sizeof(ADDRESS),1);
print(t[id]);
printf("\r\n");
}
else
printf("no %d numeber record!!!\n",id);
fclose(fp);
}
/*删除函数*/
int del(ADDRESS t[],int n)
{
char s[20];
int ch=0;
int i,j;
printf("请输入需要删除的姓名:\n");
scanf("%s",s);
i=find(t,n,s);
if(i>n-1)
printf("无法找到需要删除的记录 \n");
else
{
print(t[i]);
printf("请确认是否需要删除该记录 \n");
scanf("%d",&ch);
if(ch==1)
{
for(j=i+1;j<n;j++)
{
strcpy(t[j-1].name,t[j].name);
strcpy(t[j-1].units,t[j].units);
strcpy(t[j-1].tele,t[j].tele);
strcpy(t[j-1].add,t[j].add);
}
n--;
}
}
return n;
}
/*插入记录函数*/
int add(ADDRESS t[], int n)
{
ADDRESS temp;
int i,j;
char s[20];
printf("请输入记录信息:\n");
printf("*********************************");
printf("姓名 单位 联系电话 家庭地址\n");
printf("-------------------------------\n");
scanf("%s%s%s",temp.name,temp.units,temp.tele,temp.add);
printf("-------------------------------\n");
printf("请输入插入信息的姓名 \n");
scanf("%s",s);
i=find(t,n,s);
for(j=n-1;j>=i;j--)
{
strcpy(t[j+1].name,t[j].name);
strcpy(t[j+1].units,t[j].units);
strcpy(t[j+1].tele,t[j].tele);
strcpy(t[j+1].add,t[j].add);
}
strcpy(t[i].name,t[i].name);
strxpy(t[i].units,t[i].units);
strcpy(t[i].tele,t[i].tele);
strcpy(t[i].add,t[i].add);
n++;
return n;
}
/按姓名排序函数/
void sort(ADDRESS t[],int n)
{
int i,j,flag;
ADDRESS temp;
for(i=0;i<n;i++)
{
flag=0;
for(j=0;j<n-1;j++)
if((strcmp(t[j].name,t[j].name))>0)
{
flag=1;
strcpy(temp.name,t[j].name);
strcpy(temp.units,t[j].units);
strcpy(temp.tele,t[j].tele);
strcpy(temp.add,t[j].add);
strcpy(t[j].name,t[j+1].name);
strcpy(t[j].units,t[j+1].units);
strcpy(t[j].tele,t[j+1].tele);
strcpy(t[j].add,t[j+1].add);
strcpy(t[j+1].name,temp.name);
strcpy(t[j+1].units,temp.units);
strcpy(t[j+1].tele,temp.tele);
strcpy(t[j+1].add,temp.add);
}
if(flag==0) break;
}
printf("排序成功!!!");
}

  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-07-04 14:31
    关注

    scanf("%s",&s); 改成scanf("%s",s);
    个人建议是定义一个整数n,直接scanf("%f",&n)就可以了,你定义个字符串,还要搞字符串转换为整数,不是绕远了么

    printf("按任意键继续......\n");---可以使用system("pause");替代

    if((fp=fopen("c:\record.txt","rb"))==NULL)改为 if((fp=fopen("c:\record.txt","rb"))==NULL)

    插入函数中,
    strcpy(t[i].name,t[i].name);
    strxpy(t[i].units,t[i].units);
    strcpy(t[i].tele,t[i].tele);
    strcpy(t[i].add,t[i].add);
    改为
    strcpy(t[i].name,temp.name);
    strxpy(t[i].units,temp.units);
    strcpy(t[i].tele,temp.tele);
    strcpy(t[i].add,temp.add);

    排序函数中,if((strcmp(t[j].name,t[j].name))>0) 改为 if((strcmp(t[j+1].name,t[j].name))>0) //这里到底哪个用j+1,要看你的排序是降序还是升序

    display函数为何要读外部文件呢?不明所以啊

    另外没有发现各函数中使用的print和find函数的代码

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行