标题:local function definitions are illegal是什么意思???
只看楼主
Berrysun
Rank: 1
来 自:浙江中医药大学
等 级:新手上路
帖 子:22
专家分:0
注 册:2012-11-17
结帖率:66.67%
已结贴  问题点数:5 回复次数:2 
local function definitions are illegal是什么意思???
程序代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
struct record{
    char name[20];
    char street[20];
    char city[20];
    char eip[20];
    char state[20];
}person[500];
struct slnode{
    record date;
    struct slnode *next;
    struct slnode *prior;
};

void initlist();
void load();
void listinsert();
void mainmenu();
void enter();
void searchmenu();
void display();
void search();
void save();
void delet();

typedef slnode *linklist;
linklist l;
int num=0;
FILE *fp;

void main()
{
    initlist();
    load();
    listinsert();
    while (l)
        mainmenu();
}
void initlist()
    {
        l=new slnode;
        l->next=l;
        l->prior=l;
    }
void load(){
    if((fp=fopen("person","wb"))==NULL){
        printf("通讯录不存在!\n");
        exit(0);}
    else{
        printf("通讯录已建立!\n");
        printf("按任意键进入主菜单!\n");
        getch();
        return;}
/*    fseek (fp,0,2);
    if(ftell(fp)>0)
    {
        rewind(fp);
        for(num=0;!feof(fp)&&fread(&person[num],sizeof(struct record),l,fp);num++);
        printf("\n\t\t文件导入成功");
        printf("\n\t\t按任意键返回主菜单");
        getch();
        return;
    }
    printf("\n\t\t文件导入成功");
    printf("\n\t\t通讯录文件中无任何记录");
    printf("\n\t\t按任意键返回主菜单");
    getch();
    return;*/
}
void listinsert(){//增加一个结点
    linklist s,p=l;
    for(int i=0;i<num;i++){
        s=new slnode;
        strcpy(s->date.name,person[i].name);
        strcpy(s->date.city,person[i].city);
        strcpy(s->date.street,person[i].street);
        strcpy(s->date.eip,person[i].eip);
        strcpy(s->date.state,person[i].state);
        s->prior=p->prior;
        s->next=p;
        p->prior->next=s;
        p->prior=s;
        p=p->next;}
}
void mainmenu()//主菜单
{
    char ch;
    printf("******************************************************");
    printf("******************欢迎进入通讯录系统******************");
    printf("*********welcome to the address book system***********");
    printf("****************** 1—添加新记录 *********************");
    printf("****************** 2—查找联系人 *********************");
    printf("****************** 3—删除联系人 *********************");
    printf("****************** 4—保存退出 ***********************");
    printf("****************** 5—不保存退出 *********************");
    printf("**************** 按其它键刷新主菜单 ******************");
    printf("******************************************************");
    printf("\n\t\t请选择序号:");
    ch=getch();
    switch (ch){
    case'1':enter();break;
    case'2':searchmenu();break;
    case'3':delet();break;
    case'4':save();break;
    case'5':exit(0);break;
    default:mainmenu();}
}
void enter(){//添加记录
    printf("***************** 请输入人员信息 *********************");
    printf("\n\t\t姓名:");
    scanf("%s",&person[num].name);
    printf("\n\t\t街道:");
    scanf("%s",&person[num].street);
    printf("\n\t\t城市:");
    scanf("%s",&person[num].city);
    printf("\n\t\t输入邮编:");
    scanf("%s",&person[num].eip);
    printf("\n\t\t国家:");
    scanf("%s",&person[num].state);
    num++;
    printf("\n\t\t是否继续添加?(Y/N):");
    if(getch()=='y')
        enter();
    return;
}
void searchmenu(){//查询菜单
    char ch;
    printf("******************************************************");
    printf("**********************查询菜单************************");
    printf("****************** 1—显示所有 ***********************");
    printf("****************** 2—按姓名查询 *********************");
    printf("**************** 按其它键返回主菜单 ******************");
    printf("******************************************************");
    printf("\n\t\t请选择序号:");
    ch=getch();
    switch (ch){
    case'1':display();break;
    case'2':search();break;
    default:mainmenu();}
}
void display(){//显示所有
if(num!=0){
    printf("************** 以下为通讯录所有信息 *******************");
    for(int i=0;i<num;i++){
        printf("\n\t\t姓名: %s",person[i].name);
        printf("\n\t\t街道: %s",person[i].street);
        printf("\n\t\t城市: %s",person[i].city);
        printf("\n\t\t邮编: %s",person[i].eip);
        printf("\n\t\t国家: %s",person[i].state);
        printf("\t\t");
        if(i+1<num)
            printf("\n\t\t_____________________");}
    printf("\n\t\t**********************************************");
    getch();
    return;
}
void search(){//按姓名查询信息
    int i,j=0,a=0;
    char name[20];
    linklist p=l;
    printf("\n\t\t***************** 按姓名查找 *******************");
    printf("\n\t\t请输入姓名:");
    scanf("%s",name);
    for(i=a;i<num;i++,p=p->next,j++;){
        if(strcmp(name,p->next->date.name)==0){
            printf("查询到的信息:\n");
            printf("姓名:%s\n",p->next->date.name);
            printf("城市:%s\n",p->next->date.city);
            printf("国家:%s\n",p->next->date.state);
            printf("街道:%s\n",p->next->date.street);
            printf("邮政编码:%s\n",p->next->date.eip);}
        if(j==0) printf("\t\t 该通讯录没有该人!");

        if((i+1)<num){
            printf("是否继续查找相同名字的人员信息:(y/n)\n");
            ch=getchar();
            if(ch=='y'){a=i; continue;}
            else return;}
        else{
            printf("按任意键返回主菜单\n");
            getch();
            return;}
    }
}
void delet(){
    int i,j,a=0,findmark=0,deletmark=0;
    char ch,name[20];
    printf("请输入要删除人员姓名:\n");
    scanf("%s",name);
    for (i=a;i<num;i++){
        if(strcmp(person[i].name,name)==0){
            findmark++;
            printf("以下是您要删除的人员记录:\n");
            printf("_______________________________\n");
            printf("姓名:%s\n",person[i].name);
            printf("街道:%s\n",person[i].street);
            printf("城市:%s\n",person[i].city);
            printf("邮编:%s\n",person[i].eip);
            printf("国家:%s\n",person[i].state);
            printf("_______________________________\n");
            printf("是否删除?(y/n)\n");
            if(getch()=='y'){
                for(j=i;j<num-1;j++)
                    person[j]=person[j+1];
                num--;
                deletemark++;
                printf("\n\t\t删除成功!");
                if((i+1)<num){
                    printf("\n\t\t是否继续删除相同姓名的人员信息?(y/n)");
                    ch=getchar();
                    if(ch=='y'){a=i;continue;}
                }
                printf("\n\t\t是否继续删除?(y/n)");
                ch=getchar();
                if(ch=='y')
                    delet();
                return;}
            if((i+1)<num){
                printf("\n\t\t是否继续删除相同姓名的人员信息?(y/n)");
                ch=getchar();
                if(ch=='y'){a=i;continue;}
            }
        }
        else continue;
    }
    if((deletemark==0)&&(findmark==0)){
        printf("\n\t\t有重名信息!");
        return;
    }
    else if(findmark!=0){
        printf("\n\t\t没有重名信息!");
        printf("\n\t\t没有该人员的记录!");
        return;}
}
void save(){//写入文件
    if((fp=fopen("person","wb"))==NULL){
        printf("文件打开失败!\n");}
    for (int i=0;i<num;i++){
        if(fwrite(&person[i],sizeof(struct record),l,fp)!=l){
            printf("文件打开失败!\n");}
        for(i=0;i<num;i++){
            if(fwrite(&person[i],sizeof(struct record),l,fp)!=l)
                printf("写入文件错误!\n");}
        fclose(fp);
        printf("通讯录文件已保存\n");
        printf("按任意键退出程序\n");
        exit(0);
    }
}
搜索更多相关主题的帖子: function record local 
2012-12-28 10:59
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:4 
我实在不明白你们是怎么想的
第一,代码中不要夹带无用的垃圾,只贴和你问题相关的完整代码。
如果是我,我就会这么问
void display(){
void search(){
}
VC编译器报 error C2601: 'search' : local function definitions are illegal

第二,代码是让人看的,不是写天书,因此需要排版,这是一种道德礼貌。如果你自动排版一下,就是
2012-12-28 12:41
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
(MLGB,还没写完,又是自动贴上去了)

就是
void display() {
    void search() {
    }
自己都能看出缩进有问题,根本不需要问别人。
2012-12-28 12:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-394191-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.224853 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved