2201_75447829 2023-04-09 00:24 采纳率: 100%
浏览 16
已结题

我的程序不管怎么改都有以下两个报错

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");
}         
}
  • 写回答

1条回答 默认 最新

  • shifenglv 2023-04-09 07:43
    关注

    函数定义不合法,那就是无法不对了。readfile函数的定义要另起一行,不要和上边的}沾在一起。main函数最后多了一个大括号},请确认括号是否成对出现。

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

报告相同问题?

问题事件

  • 系统已结题 4月18日
  • 已采纳回答 4月10日
  • 创建了问题 4月9日

悬赏问题

  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥100 已有python代码,要求做成可执行程序,程序设计内容不多
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答