次の問題があります: ファイルがあります。次のデータを含むfile1.datとしましょう:
1 2
3 1
2 1
1 3
3 2
このファイルから読み取り、新しいファイルに NxN 行列を作成するプログラムを C で作成したいと思います。行列の i 番目と j 番目の要素の両方がfile1.datに含まれている場合は 1 、それ以外の場合は 0です。 . この場合、次のような 3x3 マトリックスがあります。
0 1 1
1 0 0
1 1 0
私にとって難しいのは、 file1.dat内の数値が、1 を配置する必要があるマトリックス要素の座標であり、他のサイトでは 0 を配置する必要があることをコンピューターに明確にすることです。
ユーザーの1人からの提案として、次のコードを試しました:
#include <stdio.h>
#define N 131827
int main(void){
int x,y;
int matrix[N][N];
FILE *ifp = fopen("file1.dat", "r");
FILE *ofp = fopen("matrice_A_1.dat", "w");
while(fscanf(ifp, "%d %d", &x, &y) != EOF){
x--;
y--;
matrix[x][y] = 1;
}
fclose(ifp);
for(x=0; x<N; x++){
for(y=0; y<N; y++){
fprintf(ofp, "%d ", matrix[x][y]);
}
fprintf(ofp, "\n");
}
fclose(ofp);
return(0);
}
しかし、131827 行 (および 2 列) の別のfile1.datを使用しましたが、セグメンテーション違反エラーが発生します。何か助けはありますか?