何度もすいません・・・
Posted: 2007年4月25日(水) 22:42
初めましてわからないので教えて欲しいことがあったので来させて頂きました、よろしくお願いします。
ファイルから読み込んで5人目までの成績を表示するプログラムなのですが6人以上いた場合は1人の成績も表示せずに終了させるようにするにはどうすればいいでしょうか?
ファイルは
g 20 20 20
t 40 40 40
j 40 40 40
のような感じです(上ので3人)
本当によろしくお願いします・・・
ファイルから読み込んで5人目までの成績を表示するプログラムなのですが6人以上いた場合は1人の成績も表示せずに終了させるようにするにはどうすればいいでしょうか?
ファイルは
g 20 20 20
t 40 40 40
j 40 40 40
のような感じです(上ので3人)
#include <stdio.h>
typedef struct score{
char name[40];
int eng;
int mat;
int sci;
} Score;
int main(void)
{
FILE *fp;
char cmd[20], fname[20], rank;
int ch=0;
Score data[5];
Score *p;
p=data;
while (rank!='q'){
printf("CMD>");
fflush(stdout);
gets(cmd);
sscanf(cmd, "%c %s", &rank, fname);
switch(rank){
case 'r':
if ((fp = fopen(fname, "r")) == NULL){
printf("%sが開けません\n", fname);
}
break;
case 'd':
while (fscanf(fp, "%s %d %d %d", p->name, &(p->eng), &(p->mat), &(p->sci)) == 4){
printf("名前:%s\n",data[ch].name);
printf("英語:%d\n",data[ch].eng);
printf("数学:%d\n",data[ch].mat);
printf("理科:%d\n\n",data[ch].sci);
ch++;
p++;
if (ch==5){
break;}
}
break;
case 'q':
fclose(fp);
break;
}
}
return (0);
}
あとgetsをfgetsに変えられないでしょうか?本当によろしくお願いします・・・