Windows で Visual Studio、Developer Command Promptを使用しています。
91 63 78
67 72 46
...
上記のような10行3列で点数が書かれたテキストファイル2つを読み込み、2つのファイルの和の合計点、合計点の行ごとの和の総点、総点の最大・最小値、を算出して画面とファイルに出力する課題が出されたのですが、エラーメッセージも出ず、表示もファイル出力も何も起こらない状態になってしまい困っています。
#include <stdio.h>
#define NUM 10
FILE *fin1, *fin2, *fout;
int main(void)
{
int i = 0, j = 0, a[NUM][3], b[NUM][3], total[NUM][3], all[NUM];
fin1 = fopen("i-data1.txt", "r");
if (fin1 = NULL){
printf("File not open\n");
return 1;
}
for (i = 0; i < NUM; i++) {
fscanf(fin1, "%d %d %d", &a[i][0], &a[i][1], &a[i][2]);
}
fin2 = fopen("i-data2.txt", "r");
if (fin2 = NULL){
printf("File not open\n");
return 1;
}
for (i = 0; i < NUM; i++) {
fscanf(fin2, "%d %d %d", &b[i][0], &b[i][1], &b[i][2]);
}
fout = fopen("o-data.txt", "w");
if (fout == NULL) {
printf("File not open\n");
return 1;
}
// 合計点を計算
for (i = 0; i < NUM; i++){
for (j = 0; j <= 2; j++){
total[i][j] = a[i][j] + b[i][j];
}
}
// 総点を計算
for (i = 0; i < NUM; i++){
all[i] = total[i][0] + total[i][1] + total[i][2];
}
// 最高総点、最低総点を求める
int max = all[0], min = all[0];
for (i = 1; i <= NUM; i++){
if (max < all[i])
max = all[i];
if (min > all[i])
min = all[i];
}
// 画面に出力
printf("合計点 総点\n");
for (i = 0; i < NUM; i++){
for (j = 0; j <= 2; j++){
printf("%4d", total[i][j]);
}
printf("%6d\n", all[i]);
}
printf("\n");
printf("最高総点 = %d, 最低総点 = %d", max, min);
// ファイルo-data.txtに出力
fprintf(fout, "合計点 総点\n");
for (i = 0; i < NUM; i++){
for (j = 0; j <= 2; j++){
fprintf(fout, "%4d", total[i][j]);
}
fprintf(fout, "%6d\n", all[i]);
}
fprintf(fout, "\n");
fprintf(fout, "最高総点 = %d, 最低総点 = %d\n", max, min);
fclose(fin1);
fclose(fin2);
fclose(fout);
return 0;
}