/*想定しているdata.dat
001,ODA,NOBUNAGA,800
002,SHIBATA,KATSUIE,680
003,NIWA,NAGAHIDE,900
004,AKECHI,MITSUHIDE,900
005,MURAI,SADAKATSU,709
(要空行)
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define M_LENGTH 255
#define St_MAX 100
int main( int argc, char *argv[] ){
FILE *fp;
double res,ave=0;
int i,j=0,len,size;
char str[M_LENGTH];
char *word[M_LENGTH],*cp,ch;
const char *split = ",";
struct GDATA {
int bango;
char sei[11],mei[11];
int tokuten;
} data[St_MAX];
if(argc == 1){
printf("引数が無いか、多すぎます。ファイル名を入力してください。\n");
getchar();
exit(1);
}
if((fp = fopen(argv[1],"r")) == NULL){
printf("%c ",argv[1]);
printf("OPEN ERROR!\n");
getchar();
exit(1);
}
do{
fgets(str,50,fp);
if(!feof(fp)){
cp = str;
for (len = 0; len < M_LENGTH; len++) {
if ((word[len] = strtok(cp, split)) == NULL)
break;
cp = NULL;
}
data[j].bango = atoi(word[0]);
size = strlen(word[1]);
for(i=0;i <= size;i++){
data[j].sei[i] = word[1][i];
}
size = strlen(word[2]);
for(i=0;i <= size;i++){
data[j].mei[i] = word[2][i];
}
data[j].tokuten = atoi(word[3]);
ave += atoi(word[3]);
j++;
}
}while(!feof(fp));
fclose(fp);
printf(" _____________________________________________________\n");
printf("|___________________学生レコード______________________|\n");
printf("%s \t %-10s \t %-10s \t %s\n","学籍番号","名字","名前","得点");
for(i=0; i!=j; i++)
printf("%d \t %-10s \t %-10s \t %d\n",data[i].bango,data[i].sei,data[i].mei,data[i].tokuten);
res = ave/j;
printf("AVERAGE:%.1f\n",res);
getchar();
return 0;
}