关于#c##的问题:需要整理三名学生的三科成绩,从键盘上输入结构体数组各元素的值,将结构体数组的内容写入到一个文件中,并从文件中读出

需要整理三名学生的三科成绩,从键盘上输入结构体数组各元素的值,将结构体数组的内容写入到一个文件中,并从文件中读出,并输出到屏幕上。

img


#include <stdio.h>
#include <stdlib.h>

struct Student
{
    char name[10];
    int num[3];
};

int main()
{
    struct Student stu[3];
    FILE *file;
    file=fopen("file.txt","w");
    if(file!=NULL)
    {
        for(int i=0;i<3;i++)
        {
            printf("姓名:");
            scanf("%s",stu[i].name);
            scanf("%d %d %d",&stu[i].num[0],&stu[i].num[1],&stu[i].num[2]);
            fputs(stu[i].name,file);
            fputc('\t',file);
            fprintf(file,"%d %d %d",stu[i].num[0],stu[i].num[1],stu[i].num[2]);
            if(i!=2)
            {
                fputc('\n',file);
            }
        }
    }
    fclose(file);
    char line[50];
    file=fopen("file.txt","r");
    while(!feof(file))
    {
        fgets(line,50,file);
        printf("%s",line);
    }
    return 0;
}

解答如下

img

img

#include <stdio.h>
#include<stdlib.h>
struct stu
{
    double score1;
    double score2;
    double score3;
};
void save(struct stu Stu[],int num)
{
    FILE *fp;
    fp = fopen("test.txt","a+");
    if(fp==NULL)
    {
        printf("Open filefailure!");
        exit(1);
    }
    else
    {
        for(int i=0;i<num;i++)
        {    
            fprintf(fp,"%lf %lf %lf\n",Stu[i].score1,Stu[i].score2,Stu[i].score3);
        }
    }
}
void read(struct stu Stu[],int num)
{
    FILE *fp;
    fp = fopen("test.txt","r");
        if(fp==NULL)
    {
        printf("Open filefailure!");
        exit(1);
    }
    else
    {
        for(int i=0;i<num;i++)
        {
            fscanf(fp,"%lf %lf %lf\n",&Stu[i].score1,&Stu[i].score2,&Stu[i].score3);
        }
    }
}
void prin(struct stu Stu[],int num)
{
    for(int i=0;i<num;i++)
    {
        printf("成员%d成绩:%.2lf %.2lf %.2lf\n",i+1,Stu[i].score1,Stu[i].score2,Stu[i].score3);
    }
}
int main()
{
    int num=3;
    struct stu Stu[num];
    for(int i=0;i<num;i++)
    {
        printf("输入成员%d的三个成绩:\n",i+1);
        scanf("%lf%lf%lf",&Stu[i].score1,&Stu[i].score2,&Stu[i].score3);
    }
    save(Stu,num);
    read(Stu,num);
    prin(Stu,num);
    return 0;
}