永发信息网

C语言改错求

答案:3  悬赏:20  手机版
解决时间 2021-05-11 15:30
  • 提问者网友:你独家记忆
  • 2021-05-11 03:54

#include <stdio.h>
#include <string.h>
struct list{
char no[2];
char name[10];
char tel[13];
char addr[20];
};
void newfriend(struct list s[]);
void modify(struct list s[]);
void del(struct list s[]);
void search(struct list s[]);

void main()
{
FILE *fp;
struct list s[100];
int num=0;
int i=0;
int choice;
if((fp=fopen("friendlist.txt","r"))==NULL)
{printf("can not open it!\n");
}


printf("%s%s%s%s\n",s[i].no,s[i].name,s[i].tel,s[i].addr);
printf("----------------------\n");
if(fscanf(fp,"%s%s%s%s",s[i].no,s[i].name,s[i].tel,s[i].addr)!=EOF)
{
printf("%s%s%s%s\n",s[i].no,s[i].name,s[i].tel,s[i].addr);
i++;
}
printf("----------------------\n");
num=i;
fclose(fp);
do{
printf("通信录功能: 1.新建 2.修改 3.删除 4.查询 0.退出\n");
printf("请选择:");
scanf("%d",&choice);
switch(choice){
case 1:newfriend(s);break;
case 2:modify(s);break;
case 3:del(s);break;
case 4:search(s);break;
case 0:break;
}while(choice!=0);
printf("欢迎使用本程序!\n");
printf("请继续!");

return ;
}

void newfriend(struct list s[]);
{
printf("请输入序号(已存在记录条数加一):");
scanf("%s",s[i].no);
printf("请输入姓名:");
scanf("%s",s[i].name);
printf("请输入电话号码:");
scanf("%s",s[i].tel);
printf("请输入地址:");
scanf("%s",s[i].addr);
while((fp=fopen("friendlist.txt","w"))==NULL)
{
printf("can not open it!\n");

}
fscanf(fp,"%s%s%s%s",s[i].no,s[i].name,s[i].tel,s[i].addr);
fclose(fp);
}


void modify(struct list s[]);
{
int i,j;
char name[10];

printf("请输入要修改的记录姓名:");
scanf("%s",name);
int flag=0;
for(i=0;!flag&&i<num;i++)
{
if (strcmp(s[i].name,name)==0)
{
for(j=i;j<num-1;j++)
s[j]=s[j+1];
num=num-1;
flag=1;
}
}
if(!flag)
{
printf("\n %s 不存在!\n",name);
return ;
}
if((fp=fopen("friendlist.txt","w"))==NULL)
{
printf("can not creat new flile<friendlist.txt>.\n");

}
printf("请输入序号(原记录序号):");
scanf("%s",s[i].no);
printf("请输入姓名:");
scanf("%s",s[i].name);
printf("请输入电话号码:");
scanf("%s",s[i].tel);
printf("请输入地址:");
scanf("%s",s[i].addr);
fscanf(fp,"%s%s%s%s",s[i].no,s[i].name,s[i].tel,s[i].addr);
fclose(fp);
}


void del(struct list s[]);
{
FILE *fp;
char name[20];
int flag=0;
int i,num,j;
printf("请输入要删的记录姓名:");
scanf("%s",name);
for(i=0;(!flag)&&(i<num);i++)
{
if (strcmp(s[i].name,name)==0)
{
for(j=i;j<num-1;j++)
s[j]=s[j+1];
num=num-1;
flag=1;
}
}
if(!flag)
{
printf("\n %s 不存在!\n",name);
return ;
}
if((fp=fopen("friendlist.txt","w"))==NULL)
{
printf("can not creat new flile<friendlist.txt>.\n");

}

for(i=0;i<num;i++)
{
printf("%s%s%s%s",s[i].no,s[i].name,s[i].tel,s[i].addr);
fprintf(fp,"%s%s%s%s",s[i].no,s[i].name,s[i].tel,s[i].addr);
}
return ;
}


void search(struct list s[]);

{
int flag=0,i,num;
char name[10],tel[13],addr[20];
printf("请输入要查询的信息:");
scanf("%s",name);
for(i=0;!flag&&i<num;i++)
{
if(strcmp(s[i].name,name)==0)
{ printf("查询到信息:\n");
printf("%s%s%s%s",s[i].no,s[i].name,s[i].tel,s[i].addr);
}
}
return ;
}
} error C2062: type 'void' unexpected出在第一个函数

最佳答案
  • 五星知识达人网友:逐風
  • 2021-05-11 04:44

void newfriend(struct list s[]);
void modify(struct list s[]);
void del(struct list s[]);
void search(struct list s[]);


在实现功能的时候都加了一个分号


void newfriend(struct list s[])


中所用的 i 没声明


void modify(struct list s[])


中所用的 fp 也没声明


全部回答
  • 1楼网友:不想翻身的咸鱼
  • 2021-05-11 06:44

bug 1:

while((fp=fopen("friendlist.txt","w"))==NULL) { printf("can not open it!\n"); 这里应该直接返回 return; }

bug2:

void del(struct list s[]);

文件打开后未关闭,且函数名后不应该带“;”,这表示这是一个函数声明

bug3:

对输入未做有效性判断,switch语句中没有default

没时间再看了,下班了,希望你自己再好好检查一下,补充一下。

  • 2楼网友:野慌
  • 2021-05-11 06:14

void main() { FILE *fp; struct list s[100]; int num=0; int i=0; int choice; if((fp=fopen("friendlist.txt","r"))==NULL) {printf("can not open it!\n"); } printf("%s%s%s%s\n",s[i].no,s[i].name,s[i].tel,s[i].addr); printf("----------------------\n"); if(fscanf(fp,"%s%s%s%s",s[i].no,s[i].name,s[i].tel,s[i].addr)!=EOF) { printf("%s%s%s%s\n",s[i].no,s[i].name,s[i].tel,s[i].addr); i++; } printf("----------------------\n"); num=i; fclose(fp); do{ printf("通信录功能: 1.新建 2.修改 3.删除 4.查询 0.退出\n"); printf("请选择:"); scanf("%d",&choice); switch(choice){ case 1:newfriend(s);break; case 2:modify(s);break; case 3:del(s);break; case 4:search(s);break; case 0:break; }while(choice!=0); printf("欢迎使用本程序!\n"); printf("请继续!"); return ; }

void 和return不能同时用

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯