Code Archive/C언어

Step16. 성적표 텍스트파일로 출력하는 프로그램

쌍큐 2014. 9. 12. 13:07

#include <stdio.h>
struct Subject{
char title[20];
int score;
char grade;
};
void setGrade(Subject *ptr){
switch(ptr->score/10){
case 10:
case 9:
ptr->grade='A';
break;
case 8:
ptr->grade='B';
break;
case 7:
ptr->grade='C';
break;
case 6:
ptr->grade='D';
break;
default:
ptr->grade='F';
}
}
void inputSubject(Subject *arr, int len){
int i;
for(i=0;i<len;i++){
scanf(" %s",arr[i].title);
scanf(" %d",&arr[i].score);
setGrade(&arr[i]);
}

}
void printSubject(Subject *arr, int len){
int i;
double avg = 0.0;
FILE *file;
file = fopen("c:\\test\\score.txt","wt");

fprintf(file,"------------------------\n");
fprintf(file,"       성적표\n");
fprintf(file,"------------------------\n");
fprintf(file," 과목명    성적    등급\n");
fprintf(file,"------------------------\n");
for(i=0;i<len;i++){
fprintf(file,"%5s %8d %6c\n",arr[i].title,arr[i].score,arr[i].grade);
avg += arr[i].score;
}
fprintf(file,"------------------------\n");
fprintf(file,"   평균 : %lf\n", avg/len);
fprintf(file,"------------------------\n");

fclose(file);

}
void main(){
Subject arr[4];

inputSubject(arr,sizeof(arr)/sizeof(Subject));
printSubject(arr,sizeof(arr)/sizeof(Subject));

}