关闭
ZhouRou9 2020-12-23 16:24 采纳率: 100%
浏览 51
已采纳

帮忙修改C语言的一个校友信息管理系统

几个函数存在问题,价格可以私聊。

  • 写回答

18条回答 默认 最新

  • 在黎明的反思 2020-12-25 02:42
    关注

    void xiugai()
    {
        int i,j,n,c,num;
        char name[50]={},cc[1000]={};
        FILE *fp;
        fp=fopen("D:\\DATA\\data.txt","w+");   //首先这个w+打开方式,会清空文件内容
        if(NULL==fp)
        {
            printf("文件打开失败!\n");
            return;
        }
        int N=0;
        while(!feof(fp))
        {
            fread(&per[N],sizeof(person),1,fp);  // 这里读取的数据是空的,因为w+方式打开时已经清空了里面内容,这里读取一次就结束了N==1最后
            N++; 
        }
        printf("请输入你要修改信息的校友姓名:");
        gets(name);
        getchar();
        for(i=0;i<N;i++)    //N=1
        {
            if(strcmp(name,per[i].name)==0)
                num=i;  //除非你名称输入空否则不会进入这里,这的num前面没有初始化是个异常值,
        } 
        printf("请输入你要修改哪一项信息:\n1.入校年份\n2.在校身份\n3.所在系别\n4.研究领域\n5.简介\n6.成就1\n7.成就2\n8.成就3\n");
        getchar();
        scanf("%d",&n);
        printf("请输入修改后的信息内容:");
        fflush(stdin);
        switch(n)
        {
        case 1:{ scanf("%d",&per[num].nianfen); break;} //这里修改的per[num],由于num是个异常,不知道修改的是第几个,很大很大可能不是per[0]
        case 2:{ gets(cc); strcpy(per[num].positon,cc); break;}
        case 3:{ gets(cc); strcpy(per[num].yuanxi,cc); break;}
        case 4:{ gets(cc); strcpy(per[num].lingyu,cc); break;}
        case 5:{ gets(cc); strcpy(per[num].jianjie,cc); break;}
        case 6:{ gets(cc); strcpy(per[num].chengjiu1,cc); break;}
        case 7:{ gets(cc); strcpy(per[num].chengjiu2,cc); break;}
        case 8:{ gets(cc); strcpy(per[num].chengjiu3,cc); break;}
        }
        for(i=0;i<N;i++)
            if(fwrite(&per[i],sizeof(person),1,fp)!=1)  //这里写入的就是空的数据per[0],N==1,所以写完数据为空。
                printf("写入失败!");
        fclose(fp);
    }

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(17条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部