| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 12124 人关注过本帖
标题:local function definitions are illegal是什么意思???
取消只看楼主 加入收藏
Berrysun
Rank: 1
来 自:浙江中医药大学
等 级:新手上路
帖 子:22
专家分:0
注 册:2012-11-17
结帖率:66.67%
收藏
已结贴  问题点数:5 回复次数:0 
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
快速回复:local function definitions are illegal是什么意思???
数据加载中...
 
   



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

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