D:\Desktop\4.cpp(226) : error C2601: 'readfile' : local function definitions are illegal
D:\Desktop\4.cpp(246) : error C2601: 'main' : local function definitions are illegal
以下是程序,帮忙看看有什么问题
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<windows.h>
#define N 100
int len=0;
struct music
{
char name[20]; //歌名
char singer[20]; //演唱者
char authors[20]; //作词
char compose[30]; //作曲
char album[20]; //所属专辑
char time[15]; //出版时间
char company[30]; //出版公司
}music[N];
void menu()
{
printf("\t\t\t********功能选择****************\n");
printf("\t\t\t* 1.添加歌曲信息 *\n");
printf("\t\t\t* 2.显示歌曲信息 *\n");
printf("\t\t\t* 3.查找歌曲信息 *\n");
printf("\t\t\t* 4.插入歌曲信息 *\n");
printf("\t\t\t* 5.删除歌曲信息 *\n");
printf("\t\t\t* 6.修改歌曲信息 *\n");
printf("\t\t\t* 7.保存歌曲信息 *\n");
printf("\t\t\t* 8.刷新歌曲信息 *\n");
printf("\t\t\t* 0.退出程序 *\n");
printf("\t\t\t********************************\n");
printf("请输入要进行的操作>");
}
void proc()
{
int i=0;
printf("\n\t\t\t\t欢迎进入gtwl的系统");
printf("\n\n\n\t\t\t\t系统加载中……");
for(i=1;i<=30;i++)
{
printf(">");
Sleep(200);
}
printf("\n");
}
void input(struct music *p)
{
int a;
while(1)
{
printf("请输入歌名>");
scanf("%s",&(p+len)->name);
printf("请输入演唱者>");
scanf("%s",&(p+len)->singer);
printf("请输入作词>");
scanf("%s",(p+len)->authors);
printf("请输入作曲>");
scanf("%s",(p+len)->compose);
printf("请输入歌曲所属专辑>");
scanf("%s",(p+len)->album);
printf("请输入歌曲出版时间>");
scanf("%s",(p+len)->time);
printf("请输入歌曲出版公司>");
scanf("%s",(p+len)->company);
len++;
printf("录入完毕,输入:1继续添加,输入:0返回上一级菜单>");
scanf("%d",&a);
if(a!=1)
break;
}
}
void output(struct music *p)
{
int i;
for (i=0;i<len;i++)
{
printf("歌名:%s\t",*(p+i)->name);
printf("演唱者:%s\t",*(p+i)->singer);
printf("作词:%s\t",*(p+i)->authors);
printf("作曲:%s\t",*((p+i)->compose));
printf("歌曲所属专辑:%s\t",*((p+i)->album));
printf("歌曲出版时间:%s\t",*((p+i)->time));
printf("歌曲出版公司:%s\t",*((p+i)->company));
printf("\n");
}
}
void output_(struct music *p,int index)
{
printf("歌名:%s\t",*(p+index)->name);
printf("演唱者:%s\t",*(p+index)->singer);
printf("作词:%s\t",*(p+index)->authors);
printf("作曲:%s\t",*((p+index)->compose));
printf("歌曲所属专辑:%s\t",*((p+index)->album));
printf("歌曲出版时间:%s\t",*((p+index)->time));
printf("歌曲出版公司:%s/t",*((p+index)->company));
printf("\n");
}
void find_(struct music *p)
{
int index=0,i;
char name[20];
printf("请输入要查找的歌名:");
scanf("%s", &name);
for(i=0;i<len;i++)
if(strcmp( (p+i)->name ,name )==0)
{
printf("歌名:%s\t",*(p+i)->name);
printf("演唱者:%s\t",*(p+i)->singer);
printf("作词:%s\t",*(p+i)->authors);
printf("作曲:%s\t",*((p+i)->compose));
printf("歌曲所属专辑:%s\t",*((p+i)->album));
printf("歌曲出版时间:%s\t",*((p+i)->time));
printf("歌曲出版公司:%s\t",*((p+i)->company));
printf("\n");
}
}
int find(struct music *p,char name[])
{
int index=-1,i;
for(i=0;i<len;i++)
if(strcmp( (p+i)->name ,name )==0)
index=i;
return index;
}
void insert(struct music *p)
{
int m,i;
char name[20],singer[20],authors[20],compose[20],album[20],time[20],company[20];
printf("请输入插入歌曲的信息:(歌名_演唱者_作词_作曲_歌曲所属专辑_歌曲出版时间_歌曲出版公司)\n");
scanf("%s",&name);
scanf("%s",&singer);
scanf("%s",&authors);
scanf("%s",&compose);
scanf("%s",&album);
scanf("%s",&time);
scanf("%s",&company);
printf("请输入插入的位置:\n");
scanf("%d",&m);
if (m>len || m<=0)
{
printf("超出范围!插入失败!\n");
}
else if (m==len)
{
strcpy((p+len)->name,name);
strcpy((p+len)->singer,singer);
strcpy((p+len)->authors,authors);
strcpy((p+len)->compose,compose);
strcpy((p+len)->album,album);
strcpy((p+len)->time,time);
strcpy((p+len)->company,company);
printf("插入成功!\n");
len++;
}
else
{
for ( i = len; i >=m-1 ; i--){
*(p+i+1)=*(p+i);
}
strcpy((p+m-1)->name,name);
strcpy((p+m-1)->singer,singer);
strcpy((p+m-1)->authors,authors);
strcpy((p+m-1)->compose,compose);
strcpy((p+m-1)->album,album);
strcpy((p+m-1)->time,time);
strcpy((p+m-1)->company,company);
printf("插入成功!\n");
len++;
}
}
void del(struct music *p)
{
int j,index;
char name[20];
printf("请输入要删除歌曲的歌名>>>");
scanf("%s",&name);
index=find(music,name);
if(index!=-1)
{
for(j=index;j<len;j++)
{
*(p+j) =*(p+j+1);
}
len--;
printf("删除成功\n");
}
else
printf("查无此人\n");
}
void modify(struct music *p)
{
int index;
char name[20];
printf("请输入要修改歌曲的歌名:");
scanf("%s",&name);
index=find(music,name);
if(index!=-1)
{
printf("请输入修改歌曲的信息:(歌名_演唱者_作词_作曲_歌曲所属专辑_歌曲出版时间_歌曲出版公司)\n");
scanf("%s",&(p+index)->name);
scanf("%s",&(p+index)->singer);
scanf("%s",&(p+index)->authors);
scanf("%s",&(p+index)->compose);
scanf("%s",&(p+index)->album);
scanf("%s",&(p+index)->time);
scanf("%s",&(p+index)->company);
output_(music,index);
printf("学生信息更新成功\n");
}
else
printf("查无此人\n");
}
void preserve()
{
FILE *fp;//文件指针
fp=fopen("music.txt","wb");{ /*二进制只写打开文件*/
for (int i = 0; i <len; i++) //数据循环输入到文件内
{
fprintf(fp,"%s %s %s %s %s %s %s\n",music[i].name,music[i].singer,music[i].authors,music[i].compose,music[i].album,music[i].time,music[i].company);
}
fclose(fp); //关闭文件
system("pause");
}void readfile() //输出文件
{
FILE *fp;
int int=0;
if((fp=fopen("music.txt","r"))==NULL) //以只读的方式打开文件,判断是否正常打开文件
{
printf("OPEN FILE ERROR!!!");
system("pause");
return;
}
while(fscanf(fp,"%s %s %s %s %s %s %s\n",music[i].name,music[i].singer,music[i].authors,music[i].compose,music[i].album,music[i].time,music[i].company)==7)
{
printf("第%d行读入完成!",i+1);
i++;
}
len=i;
fclose(fp);
printf("读入完毕");
system("pause");
}
void main()
{
char user[20],ps[20];
int choice,j;
proc();
system("cls");
printf("\n");
printf("请输入用户名:");
gets(user);
printf("\n请输入密码:");
j=0;
while((ps[j]=getch())!='\r')
{
printf("*");
j++;
}
ps[j]='\0';
printf("\n");
if((strcmp(user,"admin")==0)&&(strcmp(ps,"1234")==0))
{switch(choice)
{
case 1:
input(music);
break;
case 2:
output(music);
break;
case 3:
find_(music);
break;
case 4:
insert(music);
break;
case 5:
del(music);
break;
case 6:
modify(music);
break;
case 7:
preserve();
break;
case 8:
readfile();
break;
case 0:
choice=0;
printf("程序正常已退出\n");
break;
default:
printf("输入错误,请重新输入\n");
break;
}
system("pause");
}
else
printf("用户名或密码错误,无法登录!\n");
}
}