• 文件


    #include<stdio.h>
    #include<string.h>
    #define SIZE 5
    struct Student
    {
    char name[20];
    int num;
    char sex;
    double sub1;
    double sub2;
    double sub3;
    double aver;
    };
    void write_to_f1(FILE* fp,struct Student stu[])
    {
    int i;
    double av;
    if((fp=fopen("student.dat","wb"))==NULL)
    {
    printf("cannot open this file ");
    return;
    }
    for(i=0; i<SIZE; i++)
    {
    av=0;
    scanf("%s",stu[i].name);
    getchar();
    scanf("%d",&stu[i].num);
    getchar();
    scanf("%c",&stu[i].sex);
    getchar();
    scanf("%lf%lf%lf",&stu[i].sub1,&stu[i].sub2,&stu[i].sub3);
    getchar();
    av=(stu[i].sub1+stu[i].sub2+stu[i].sub3)/3;
    stu[i].aver=av;
    }
    for(i=0; i<SIZE; i++)
    if(fwrite(&stu[i],sizeof(struct Student),1,fp)!=1)
    printf("file write error ");
    fclose(fp);
    }
    void read_and_sort(FILE* fp,struct Student stu[])//¶ÁÈ¡Êý¾Ý²¢ÅÅÐò
    {
    int i,flag1,j;
    struct Student term;
    if((fp=fopen("student.dat","r"))==NULL)
    {
    printf("cannot open this file ");
    return;
    }
    for(i=0; i<SIZE; i++)
    fread(&stu[i],sizeof(struct Student),1,fp);
    for(i=0; i<SIZE-1; i++)
    {
    flag1=i;
    for(j=flag1; j<SIZE; j++)
    if(stu[j].aver>stu[flag1].aver)
    flag1=j;
    term=stu[i];
    stu[i]=stu[flag1];
    stu[flag1]=term;
    }
    fclose(fp);
    }

    void write_to_f2(FILE* fp,struct Student stu[])
    {
    int i;
    if((fp=fopen("sort_stu.dat","w"))==NULL)
    {
    printf("cannot open this file ");
    return;
    }
    for(i=0; i<SIZE; i++)
    {
    printf("%-15s%-10d%c %6.1lf%6.1lf%6.1lf %6.1lf ",stu[i].name,stu[i].num,stu[i].sex,stu[i].sub1,stu[i].sub2,stu[i].sub3,stu[i].aver);
    fprintf(fp,"%-15s%-10d%c %6.1lf%6.1lf%6.1lf %6.1lf ",stu[i].name,stu[i].num,stu[i].sex,stu[i].sub1,stu[i].sub2,stu[i].sub3,stu[i].aver);
    }
    fclose(fp);
    }
    int main()
    {
    FILE* fp;
    struct Student stu[5];
    //write_to_f1(fp,stu);
    read_and_sort(fp,stu);
    write_to_f2(fp,stu);
    return 0;
    }
    /*ll 101 f 98 97 99
    mm 102 f 77 99 99
    nn 103 f 88 99 99
    bb 104 f 67 99 99
    kk 105 f 79 99 99 */

    或:

    #include<stdio.h>
    #include<stdlib.h>
    #define size 5
    struct student
    {
    char name [10];
    int num;
    float score[3];
    char sex;
    float ave;
    } stu[size],t;
    void save()
    {
    FILE *fp;
    int i;
    if((fp=fopen("stu.dat","w"))==NULL)
    {
    printf("the file can not open ");
    return;
    }
    for(i=0; i<size ; i++)
    /*if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
    {
    printf("the file write error ");
    return;
    }*/
    fprintf(fp,"%-10s %3d %7.2f %7.2f %7.2f %5c %7.2f ",stu[i].name,stu[i].num,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sex,stu[i].ave);
    fclose(fp);
    }
    void sort()
    {
    FILE *fp1,*fp2;
    int i,j;
    if((fp1=fopen("stu.dat","r"))==NULL)
    {
    printf("the file can't open ");
    exit(0);
    }
    if((fp2=fopen("sort.dat","w"))==NULL)
    {
    printf("the file write error ");
    exit(0);
    }
    for (i=0; i<size; i++)
    {
    /*if(fread(&stu[i],sizeof(struct student ),1,fp1)!=1)
    {
    printf("file read errror ");
    exit(0);
    }*/
    fscanf(fp1,"%-10s %3d %7.2f %7.2f %7.2f %5c %7.2f ",stu[i].name,&stu[i].num,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].sex,&stu[i].ave);
    }
    for(i=0; i<size; i++)
    {
    for(j=i+1; j<size; j++)
    if(stu[i].ave<stu[j].ave)
    {
    t=stu[i];
    stu[i]=stu[j];
    stu[j]=t;
    }
    fwrite(&stu[i],sizeof(struct student),1,fp2);
    }
    fclose(fp1);
    fclose(fp2);
    }

    int main()
    {
    int i;
    float sum[size];
    FILE *fp1;
    for(i=0; i<size; i++)
    {
    scanf("%s%d%f%f%f",stu[i].name,&stu[i].num,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
    getchar();
    scanf("%c",&stu[i].sex);
    sum[i]=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];
    stu[i].ave=sum[i]/3.0;
    }
    save();
    sort();
    if((fp1=fopen("sort.dat","w"))==NULL)
    {
    printf("the file can't open");
    exit(0);
    }
    fprintf(fp1,"sorted students are as fallow ");
    fprintf(fp1," name no. score1 score2 score3 sex average ");
    for(i=0; i<size; i++)
    {
    printf("%-10s %3d %7.2f %7.2f %7.2f %5c %7.2f ",stu[i].name,stu[i].num,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sex,stu[i].ave);
    fprintf(fp1,"%-10s %3d %7.2f %7.2f %7.2f %5c %7.2f ",stu[i].name,stu[i].num,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sex,stu[i].ave);
    }
    printf("the file has been writed in sort.dat");
    fclose(fp1);
    return 0;
    }
    /*ll 101 98 97 99 f
    mm 102 77 99 99 f
    nn 103 88 99 99 f
    bb 104 67 99 99 f
    kk 105 79 99 99 f*/

  • 相关阅读:
    四则运算出题系统,java
    Javaweb测试
    《构建之法》 读书笔记(6)
    使用ProcDump在程序没有响应时自动收集dump
    NASA关于如何写出安全代码的10条军规
    C#和C++中的float类型
    避免在C#中使用析构函数Finalizer
    C#性能优化的一些技巧
    从bug中学习怎么写代码
    Code Smell那么多,应该先改哪一个?
  • 原文地址:https://www.cnblogs.com/SSYYGAM/p/4215303.html
Copyright © 2020-2023  润新知