07/06/09 21:57:33
>>61 (・3・) エェー CしかできないからC++っぽくするなら自分で書き換えてくれYO!
#include <cstdio>
void file_display(char *filename){
FILE *fp;
int moji;
if((fp=fopen(filename, "r"))==NULL) return;
while((moji=fgetc(fp))!=EOF) fputc(moji, stdout);
fclose(fp);
}
int main(void){
char one_line[1024], *fname_in="x-file", *fname_out="Bファイル";
FILE *fp_in, *fp_out;
double point, gpa, point_sum=0.0, gpa_sum=0.0;
int num=0;
file_display(fname_in); // q2 only
if((fp_in=fopen(fname_in, "r+"))==NULL) return 1;
if((fp_out=fopen(fname_out, "w"))==NULL) return 2; // q2 only
while(fgets(one_line, sizeof(one_line), fp_in)){
if(sscanf(one_line, "%*d %*s %lf %lf", &point, &gpa)!=2) continue;
num++; point_sum+=point; gpa_sum+=gpa; // q3 only
if(point>=85 || gpa<2.0){
fputs(one_line, stdout); // q1 only
fputs(one_line, fp_out); // q2 only
}
}
if(num>0) fprintf(fp_in, "-1 average %f %f\n", point_sum/num, gpa_sum/num); // q3 only
fclose(fp_in);
fclose(fp_out); // q2 only
file_display(fname_out); // q2 only
file_display(fname_in);
return 0;
}