标题:自定义的adjust怎么才能对文件中某个的成绩修改并保存
只看楼主
ausring
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2022-4-26
结帖率:100%
已结贴  问题点数:20 回复次数:4 
自定义的adjust怎么才能对文件中某个的成绩修改并保存
struct aca
{
    char name[10];//系名字
    int num;//编号
    int score;//总分
    int score1;//男子总分
    int score2;//女子总分
    float mscore[3];//男子项目成绩
    int male[3];//男子项目分数
    float fscore[3];//女子项目成绩
    int female[3];//女子项目分数
}aca[N];
void save()
{
    FILE *fp;
    int i;
    if((fp=fopen("score.txt","wb"))==NULL)
    {
        printf("cannot open the file stud!\n");
        exit(0);
    }
    for(i=0;i<N;i++)
    {
        if((fwrite(&aca[i],sizeof(struct aca),1,fp))!=1)
        printf("flie write error!\n");
    }
    fclose(fp);
}
int main()
{
    int i,k,l;
    for(i=0;i<N;i++)
    {
    printf("输入系编号:");
    scanf("%d",&aca[i].num);
    printf("输入系名字:");
    scanf("%s",aca[i].name);
    printf("输入男子组分数:\n");
    printf("100分数   成绩  200分数  成绩  400分数   成绩 \n");
    scanf("%d %f %d %f %d %f",&aca[i].male[0],&aca[i].mscore[0],&aca[i].male[1],&aca[i].mscore[1],&aca[i].male[2],&aca[i].mscore[2]);
    aca[i].score1=aca[i].male[0]+aca[i].male[1]+aca[i].male[2];
    printf("输入女子组分数:/n");
    printf("100分数   成绩  200分数  成绩  400分数   成绩 \n");
    scanf("%d %f %d %f %d %f",&aca[i].female[0],&aca[i].fscore[0],&aca[i].female[1],&aca[i].fscore[1],&aca[i].female[2],&aca[i].fscore[2]);
    aca[i].score2=aca[i].female[0]+aca[i].female[1]+aca[i].female[2];
    aca[i].score=aca[i].score1+aca[i].score2;
    }
    save();
}
int adjust()
{
    FILE *fp;
    int i,k,l,j,n;
    fp=fopen("score.txt","rb");
    for(i=0;i<N;i++)
    {
        fread(&aca[i],sizeof(struct aca),1,fp);
    }
    fclose(fp);
    printf("输入修改的学院序号:\n");
    scanf("%d",&j);
    printf("输入修改的项目序号:\n");
    scanf("%d",&k);
    printf(" 分数,成绩:\n");
    scanf("%d   %f",&aca[j-1].male,&aca[j-1].mscore);
    save();
    return 0;   
}
搜索更多相关主题的帖子: 分数 scanf printf int 成绩 
2022-04-26 16:35
do8do8do8
Rank: 10Rank: 10Rank: 10
来 自:沙滩
等 级:贵宾
威 望:17
帖 子:366
专家分:1845
注 册:2010-7-2
得分:20 
楼主用的是全局数组的数据结构
以TXT文本来存储数据
要想完成修改某个分数
那么就要查询出要修改的数据
所以adjust()缺少一个查询

学C语言从底层开始,学编程从问题开始,一日学会C!!!
2022-04-26 17:55
ausring
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2022-4-26
得分:0 
回复 2楼 do8do8do8
不太会用,能举个例子吗?
2022-04-26 18:11
do8do8do8
Rank: 10Rank: 10Rank: 10
来 自:沙滩
等 级:贵宾
威 望:17
帖 子:366
专家分:1845
注 册:2010-7-2
得分:0 
1。 从txt读取到程序里的aca[N]:
fp=fopen("score.txt","rb");
    for(i=0;i<N;i++)
    {
        fread(&aca[i],sizeof(struct aca),1,fp);
    }
    fclose(fp);
2。输入要修改的内容的所在编号num
3。匹配num与aca[N].num, 找到相等时的aca[N]下标i
4。输入新的成绩newscore
5。把newscore 赋值给任意一个想要更改的项aca[i].int score;//总分
                          int score1;//男子总分
                          int score2;//女子总分
                          float mscore[3];//男子项目成绩
                          int male[3];//男子项目分数
                         float fscore[3];//女子项目成绩
                         int female[3];//女子项目分数
6。save();

学C语言从底层开始,学编程从问题开始,一日学会C!!!
2022-04-27 17:12



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




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

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