按格式读写文件 小实例

xiaoxiao2021-02-28  121

/************

计算平均分,并写到文本中

*************

#include <stdio.h>

#include <stdlib.h> #define N 30 typedef struct date_order{     int year;     int month;     int day; }DATE; typedef struct student {     long studentID;     char studentName[10];     char studentSex;     DATE birthday;     int score[4];     float aver; }STUDENT; void InputScore(STUDENT stu[],int n,int m) {     int i,j;     for(i = 0;i<n;i++)     {         printf("Input record %d:\n",i+1);         scanf("%ld",&stu[i].studentID);         scanf("%s",&stu[i].studentName);         scanf(" %c",&stu[i].studentSex);         scanf("%d",&stu[i].birthday.year);         scanf("%d",&stu[i].birthday.month);         scanf("%d",&stu[i].birthday.day);         for(j=0;j<m;j++)         {             scanf("%d",&stu[i].score[j]);         }     } } void AverScore(STUDENT stu[],int n,int m) {     int i,j,sum[N];     for(i=0;i<n;i++)     {         sum[i] = 0;         for(j=0;j<m;j++)         {             sum[i] = sum[i] + stu[i].score[j];         }         stu[i].aver = (float)sum[i]/m;     } } void WritetoFile(STUDENT stu[],int n,int m) {     FILE *fp;     int i,j;     if((fp = fopen("score.txt","w")) == NULL)     {         printf("Failuer to open score.txt\n");         exit(0);     }     for(i=0;i<n;i++)     {         fprintf(fp,"ld %8s < m / - / -",stu[i].studentID,         stu[i].studentName,         stu[i].studentSex,         stu[i].birthday.year,         stu[i].birthday.month,         stu[i].birthday.day         );         for(j = 0;j < m;j++)         {             fprintf(fp,"M",stu[i].score[j]);         }         fprintf(fp,"%6.1f\n",stu[i].aver);     }     fclose(fp); } int main() {     STUDENT stu[N];     int n;     printf("How many student?\n");     scanf("%d",&n);     InputScore(stu,n,4);     AverScore(stu,n,4);     WritetoFile(stu,n,4);     return 0; }
转载请注明原文地址: https://www.6miu.com/read-28632.html

最新回复(0)