A+

C语言备忘录编译错误,请求大神修改

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define Namelength 60
#define Datelength 50
#define Contentlength 800

struct memo
{
    char name[Namelength];
    char event_date[Datelength];
    char content[Contentlength];
    char remind_date[Datelength];
};

void input_memo();
void search_memo();
void modify_memo();
void modify_name();
void modify_by_event_date();
void remind_me();
void remind();
void search_by_name();
void search_by_event_date();

int  main()
{
    FILE *fp;
    int number_menu;
    char a;

    printf("\n\n*-*-*-*       欢 迎 使 用 备 忘 录      *-*-*-*\n");
loop:
    printf("\n\n*-*-*-*        备 忘 录 主 菜 单        *-*-*-*\n");
    printf("            ========================");
    printf("\n           ‖  1 输 入 新 备 忘;   ‖");
    printf("\n           ‖                      ‖");
    printf("\n           ‖  2 查 询 备 忘;      ‖");
    printf("\n           ‖                      ‖");

 


    printf("\n           ‖  3 编 辑 备 忘;      ‖");
    printf("\n           ‖                      ‖");
    printf("\n           ‖  4 提  醒  我;       ‖");
    printf("\n           ‖                      ‖");
    printf("\n           ‖  5 退 出 备 忘;      ‖\n");
    printf("            ========================");
    printf("\n请 输 入 菜 单 功 能 的 数 字:");

    a = getch();

    if(a>='1'&&a<='5')
    {
        printf("\n\n您 输 入 的 数 字 是 : %c",a);
        number_menu = (a - '0');
    }
    else
    {
        printf("\n\n您 输 入 的 数 字 是 : %c",a);
        printf("\n\n对 不 起,您 的 输 入 有 误,请 输 入 正 确 的 菜 单 功 能 数 字,谢 谢。\n");
        goto loop;
    }

    switch(number_menu)
    {
    case 1:
        input_memo();
        goto loop;

    case 2:
        search_memo();
        goto loop;

    case 3:
        modify_memo();
        goto loop;

    case 4:
        remind_me();
        goto loop;

    case 5:
        exit(0);

    default:
        printf("\n对 不 起,您 的 输 入 有 误,请 输 入 正 确 的 菜 单 功 能 数 字,谢 谢。\n");
        goto loop;
    }
}


void input_memo()
{
    struct memo m;
    FILE *fp;

    if((fp=fopen("memo","a"))==NULL)
    {
        printf("对 不 起,无 法 打 开 文 件!\n");
        exit(1);
    }

    printf("\n\n请 输 入 新 备 忘。 (如 果 您 想 返 回 上 级 菜 单,请 输 入 0。):\n");

    printf("\n请 输 入 新 的 备 忘 名 称:");
    scanf("%s",m.name);

    while(strcmp(m.name,"0"))
    {
        printf("\n请 输 入 新 的 备 忘 时 间:");
        scanf("%s",m.event_date);
        printf("\n请 输 入 新 的 备 忘 内 容:");
        scanf("%s",m.content);
        printf("\n请 输 入 新 的 备 忘 提 醒 时 间:");
        scanf("%s",m.remind_date);

        fprintf(fp,"name:%s\nevent_date:%s\ncontent:%s\nremind_date:%s\n",
                m.name,m.event_date,m.content,m.remind_date);

        printf("====================================");
        printf("\n您 输 入 的 新 备 忘 是:\n\n");
        printf("名 称:%s\n\n",m.name);
        printf("备 忘 时 间:%s\n\n",m.event_date);
        printf("备 忘 内 容:%s\n\n",m.content);
        printf("提 醒 时 间:%s\n\n",m.remind_date);
        printf("====================================");
        printf("\n恭 喜 您,新 备 忘 已 经 输 入 成 功!\n");
        printf("\n请 输 入 另 一 个 新 备 忘!  (如 果 您 想 返 回 上  级 菜 单,请 输 入 0。):\n");
        printf("\n请 输 入 新 的 备 忘 名 称:");
        scanf("%s",m.name);
    }

    fclose(fp);
}

 


void search_memo()
{
    int sm;
    char a;

loop:
    printf("\n\n*-*-*-*-*    查 询 备 忘   *-*-*-*-*\n");
    printf("\n1 通 过 备 忘 名 称 查 询;\n");
    printf("\n2 通 过 备 忘 时 间 查 询;\n");
    printf("\n3 返 回 上 级 菜 单;\n\n");

    printf("\n请 输 入 菜 单 上 的 数 字 :");
    a = getch();

    if(a>='1'&&a<='3')
    {
        printf("\n\n您 输 入 的 数 字 是 : %c",a);
        printf("\n");
        sm = (a - '0');
    }

    else
    {
        printf("\n\n您 输 入 的 数 字 是 : %c",a);
        printf("\n\n对 不 起,您 的 输 入 有 误,请 输 入 正 确 的 菜 单 功 能 数 字,谢 谢。\n");
        goto loop;
    }

    switch(sm)
    {
    case 1:
        search_by_name();
        goto loop;

    case 2:
        search_by_event_date();
        goto loop;

    case 3:
        break;

    default:
        printf("\n对 不 起,您 的 输 入 有 误,请 输 入 正 确 的  菜 单 功 能 数 字,谢 谢。\n\n");
        goto loop;
    }
}

 

void search_by_name()
{
    struct memo i;
    FILE *fp;
    int j=0, k=0, l=0;
    char name[Namelength]= {'n','a','m','e',':'};
    char new_name[Namelength];
    if((fp=fopen("memo","r"))==NULL)
    {
        printf("对 不 起,无 法 打 开 文 件!\n");
        exit(1);
    }

    printf("\n请 输 入 需 要 查 询 的 备 忘 名 称 ( 返 回 上 级 菜 单,请 输 入 0 ):");
    scanf("%s",new_name);
    if (new_name != 0)
    {
        for(j=0; j<sizeof(new_name); )
        {
            if(new_name[j]=='\n')
                break;
            else j++;
        }
        for(l=0; l<j; l++)
        {
            name[5+l]=new_name[l];
        }
        while(! feof(fp))
        {
            fscanf(fp,"%s%s%s%s\n",i.name,i.event_date,i.content,i.remind_date);

            if(!strcmp(name,i.name))
            {
                printf("\n已 经 查 到,结 果 如 下:\n");
                printf("====================================");
                printf("\n您 查 询 的 结 果 是 :\n\n");
                printf("%s\n\n",i.name);
                printf("%s\n\n",i.event_date);
                printf("%s\n\n",i.content);
                printf("%s\n\n",i.remind_date);
                printf("====================================");
                k=1;
                break;
            }
        }

 

        if(!k)
        {
            printf("\n对 不 起,没 有 查 询 结 果!请 重 新 输 入,谢 谢。\n");
        }
    }

    fclose(fp);

}


void search_by_event_date()
{
    struct memo i;
    FILE *fp;
    int j=0,k=0,l=0;
    char event_date[Datelength]= {'e','v','e','n','t','_','d','a','t','e',':'};
    char new_event_date[Datelength];

    if((fp=fopen("memo","r+"))==NULL)
    {
        printf("\n对 不 起,无 法 打 开 文 件!\n");
        exit(1);
    }

    printf("\n请 输 入 需 要 查 询 的 备 忘 时 间 (返 回 上 级 菜 单,请 输 入 0 ):");
    scanf("%s",new_event_date);

    if (new_event_date != 0)
    {
        for(j=0; j<sizeof(new_event_date);)
        {
            if(new_event_date[j]=='\n')
                break;
            else j++;
        }

        for(l=0; l<j; l++)
        {
            event_date[11+l]=new_event_date[l];
        }

 


        while(!feof(fp))
        {
            fscanf(fp,"%s%s%s%s",i.name,i.event_date,i.content,i.remind_date);

            if(!strcmp(event_date,i.event_date))
            {
                printf("\n已 经 查 到,结 果 如 下:\n");
                printf("====================================");
                printf("\n您 查 询 的 结 果 是 :\n\n");
                printf("%s\n\n",i.name);
                printf("%s\n\n",i.event_date);
                printf("%s\n\n",i.content);
                printf("%s\n\n",i.remind_date);
                printf("====================================");

                k=1;
                break;
            }
        }
        if(!k)
        {
            printf("\n对 不 起,没 有 查 询 结 果!请 重 新 输 入,谢 谢。\n");
        }
    }

    fclose(fp);
}

void modify_memo()
{
    int mb;
    char a;

loop:
    printf("\n\n*-*-*-*   编 辑 备 忘  *-*-*-*\n");
    printf("\n1 通 过 备 忘 名 称 编 辑;\n");
    printf("\n2 通 过 备 忘 时 间 编 辑;\n");
    printf("\n3 返 回 上 级 菜 单;\n");
    printf("\n请 输 入 菜 单 上 的 数 字 :");

    a = getch();

    if(a>='1'&&a<='3')
    {
        printf("\n\n您 输 入 的 数 字 是 :%c\n",a);
        mb = (a - '0');
    }


    else
    {
        printf("\n\n您 输 入 的 数 字 是 :%c",a);
        printf("\n\n对 不 起,您 的 输 入 有 误,请 输 入 正 确 的 菜  单 功 能 数 字,谢 谢。\n");
        goto loop;
    }

    switch(mb)
    {
    case 1:
        modify_name();
        goto loop;

    case 2:
        modify_by_event_date();
        goto loop;

    case 3:
        break;

    default:
        printf("\n对 不 起,您 的 输 入 有 误,请 输 入 正 确 的 菜 单 功 能 数 字,谢 谢。\n\n");
        goto loop;
    }
}

void modify_name()
{
    struct memo i;
    FILE *fp;
    int j=0,k=0,l=0;
    long offset;
    char name[Namelength]= {'n','a','m','e',':'};
    char new_name[Namelength];

    printf("\n请 输 入 您 要 修 改 的 备 忘 名 称:");
    scanf("%s",new_name);

    for(j=0; j<sizeof(new_name);)
    {
        if(new_name[j]=='\n')
            break;
        else j++;
    }
    for(l=0; l<j; l++)
    {
        name[5+l]=new_name[l];
    }


    if((fp=fopen("memo","r+"))==NULL)
    {
        printf("\n对 不 起,无 法 打 开 文 件!\n");
        exit(1);
    }
    while(!feof(fp))
    {
        offset=ftell(fp);
        fscanf(fp,"%s%s%s%s",i.name,i.event_date,i.content,i.remind_date);

        if(!strcmp(name,i.name))
        {
            k=1;
            break;
        }
    }
    if(k)
    {
        printf("\n已 经 查 到,结 果 如 下:\n");
        printf("====================================");
        printf("\n您 查 询 的 结 果 是 :\n\n");
        printf("%s\n\n",i.name);
        printf("%s\n\n",i.event_date);
        printf("%s\n\n",i.content);
        printf("%s\n\n",i.remind_date);
        printf("====================================");
        printf("\n请 输 入 新 备 忘 \n");
        printf("====================================");
        printf("\n请 输 入 新 备 忘 的 名 称 :");
        scanf("%s",i.name);
        printf("\n请 输 入 新 备 忘 的 时 间 :");
        scanf("%s",i.event_date);
        printf("\n请 输 入 新 备 忘 的 内 容 :");
        scanf("%s",i.content);
        printf("\n请 输 入 新 备 忘 的 提 醒 时 间 :");
        scanf("%s",i.remind_date);
        fseek(fp,offset,SEEK_SET);
        fprintf(fp,"\nname:%s\nevent date:%s\ncontent:%s\nremind_date:%s\n",
                i.name,i.event_date,i.content,i.remind_date);
        printf("\n恭 喜 您,编 辑 成 功!\n");
        printf("====================================\n");
    }
    else
        printf("\n对 不 起,没 有 查 询 结 果,请 重 新 输 入,谢 谢。");
    fclose(fp);
}

 

void modify_by_event_date()
{
    struct memo i;
    FILE *fp;
    int j=0,k=0,l=0;
    long offset;
    char event_date[Datelength]= {'e','v','e','n','t','_','d','a','t','e',':'};
    char new_event_date[Datelength];

    printf("\n请 输 入 您 要 修 改 的 备 忘 时 间 :");
    scanf("%s",new_event_date);

    for(j=0; j<sizeof(new_event_date);)
    {
        if(new_event_date[j]=='\n')
            break;

        else
            j++;
    }

    for(l=0; l<j; l++)
    {
        event_date[11+l]=new_event_date[l];
    }

    if((fp=fopen("memo","r+"))==NULL)
    {
        printf("\n对 不 起,无 法 打 开 文 件!\n");
        exit(1);
    }

    while(!feof(fp))
    {
        offset=ftell(fp);
        fscanf(fp,"%s%s%s%s",i.name,i.event_date,i.content,i.remind_date);

        if(!strcmp(event_date,i.event_date))
        {
            k=1;
            break;
        }

    }

 


    if(k)
    {
        printf("\n已 经 查 到,结 果 如 下:\n");
        printf("====================================");
        printf("\n您 查 询 的 结 果 是 :\n\n");
        printf("%s\n\n",i.name);
        printf("%s\n\n",i.event_date);
        printf("%s\n\n",i.content);
        printf("%s\n\n",i.remind_date);
        printf("====================================");
        printf("\n请 输 入 新 备 忘 \n");
        printf("====================================");
        printf("\n请 输 入 新 备 忘 的 名 称 :");
        scanf("%s",i.name);
        printf("\n请 输 入 新 备 忘 的 时 间 :");
        scanf("%s",i.event_date);
        printf("\n请 输 入 新 备 忘 的 内 容 :");
        scanf("%s",i.content);
        printf("\n请 输 入 新 备 忘 的 提 醒 时 间 :");
        scanf("%s",i.remind_date);
        fseek(fp,offset,SEEK_SET);
        fprintf(fp,"\nname:%s\nevent date:%s\ncontent:%s\nremind_date:%s\n",
                i.name,i.event_date,i.content,i.remind_date);
        printf("\n恭 喜 您,编 辑 成 功!\n");
        printf("====================================\n");
    }

    else
        printf("\n对 不 起,没 有 查 询 结 果,请 重 新 输 入,谢 谢。\n");

    fclose(fp);
}

void remind_me()
remind();
}

void remind()
{
    struct memo i;
    FILE *fp;
    int j=0, k=0, l=0;
    char remind_date[Datelength]= {'r','e','m','i','n','d','_','d','a','t','e',':'};
    char new_remind_date[Datelength];
    if((fp=fopen("memo","r"))==NULL)
    {
        printf("对 不 起,无 法 打 开 文 件!\n");
        exit(1);
    }

    printf("\n请 输 入 提 醒 时 间 ( 返 回 上 级 菜 单,请 输 入 0 ):");
    scanf("%s",new_remind_date);

    if (new_remind_date != 0)
    {
        for(j=0; j<sizeof(new_remind_date); )
        {
            if(new_remind_date[j]=='\n')
                break;
            else j++;
        }

        for(l=0; l<j; l++)
        {
            remind_date[13+l]=new_remind_date[l];
        }

        while(! feof(fp))
        {
            fscanf(fp,"%s%s%s%s\n",i.name,i.event_date,i.content,i.remind_date);

            if(!strcmp(remind_date,i.remind_date))
            {
                printf("\n备 忘 提 醒:\n");
                printf("====================================");
                printf("\n您 今 天 有 备 忘 事 项:\n\n");
                printf("%s\n\n",i.name);
                printf("%s\n\n",i.event_date);
                printf("%s\n\n",i.content);
                printf("%s\n\n",i.remind_date);
                printf("====================================");
                k=1;
                break;
            }
        }
        if(!k)
        {
            printf("\n对 不 起,没 有 提 醒 ! 请 重 新 输 入,谢 谢。\n");
        }
    }

    fclose(fp);
}
 
已邀请:

要回复讨论请先登录注册