c言語構造体に関するプログラム
データファイルをコマンドラインから読み込み、元のファイルの内容に加えその平均と評価を出力するプログラムを作っているのですが、実行しても意味のわからない文字が羅列され更に平均等が0になってしまいます。
分かる方いらっしゃいましたら回答よろしく願いします<(_ _ )>
↓読み込むデータファイルの内容
1077001 Jack 87 70 71 92 91
1077002 Jo 67 77 75 92 71
1077003 Akira 37 60 71 52 36
(中略)
1077016 Kazu 95 97 90 95 98
以下、ソースコード
#include <stdio.h>
#include <stdlib.h>
typedef struct{
char sid[8];
char sname[10];
int score[5];
char grade;
double ave;
} Record;
char grade_char(double);
int main(int argc, char *argv[]){
Record data[20];
FILE *fp;
int i;
if((fp = fopen(argv[1],"r")) == NULL){
printf("Cannot open file!\n");
exit(1);
}else if(argc == 1) printf("Error! Usage: ./a.out datafilename");
i = 0;
while(fscanf(fp,"%s %s %d %d %d %d %d",data[i].sid,data[i].sname,&data[i].score[0],&data[i].score[1],&data[i].score[2],&data[i].score[3],&data[i].score[4])){
i++;
data[i].ave = (data[i].score[0]+data[i].score[1]+data[i].score[2]+data[i].score[3]+data[i].score[4])/5;
data[i].grade = grade_char(data[i].ave);
printf("%s %s %d %d %d %d %d %.1f %c\n",data[i].sid,data[i].sname,data[i].score[0],data[i].score[1],data[i].score[2],data[i].score[3],data[i].score[4],data[i].ave,data[i].grade);
}
fclose(fp);
return 0;
}
char grade_char(double ave){
if(0 <= ave && ave <= 34)return 'F';
else if(35 <= ave && ave <= 49)return 'D';
else if(50 <= ave && ave <= 64)return 'C';
else if(65 <= ave && ave <= 79)return 'B';
else if(80 <= ave && ave <= 100)return 'A';
else return 0;
}
お礼
やはりそうでしたか 回答有り難うございました。