行と列の形式で数値 (整数) を含むファイル (.dat と .txt の両方の形式) があります。このファイルから数値 (整数) を読み取る必要があります。そのデータは 2D 配列に格納されます。この配列は私の C プログラムで定義されています。これを達成するために C でファイル処理を使用しようとしましたが、ファイル全体を読み取っていません。プログラムは、ファイル内のあるデータで突然停止し、プログラムを終了します。以下は、これに使用される私のCコードです:
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#define EOL '\n'
int main(){
int i = 0,j = 0,array[][]; //i is row and j is column variable, array is the target 2d matrix
FILE *homer;
int v;
homer = fopen("homer_matrix.dat","w"); //opening a file named "homer_matrix.dat"
for(i=0;;i++)
{
for(j=0;;j++)
{
while (fscanf(homer, "%d", &v) == 1) //scanning for a readable value in the file
{
if(v==EOL) //if End of line occurs , increment the row variable
break;
array[i][j] = v; //saving the integer value in the 2d array defined
}
if(v==EOF)
break; //if end of file occurs , end the reading operation.
}
}
fclose(homer); //close the opened file
for(i=0;i<=1000;i++)
{
for(j=0;j<=1200;j++)
printf(" %d",array[i][j]); //printing the values read in the matrix.
printf("\n");
}
}
応答してくれてありがとう、しかし問題は別のものです..次のコードを使用して2次元配列にメモリを割り当てました:
#define ROW 512
#define CLMN 512
for(i = 0; i < ROW; i++)
{
for(j = 0; j < CLMN; j++)
{
array[i][j] = 0;
}
}
また、次のコードで権限を「r」に変更しました。
homer = fopen(" homer_matrix.txt" , "r");
それでも、2-D エントリを変数「配列」に入れることができません。
ps 「homer_matrix.txt」は、次のコマンドで matlab を使用して生成されます。
コード:
A=imread('homer.jpg');
I=rgb2gray(A);
dlmwrite('homer_matrix.txt',I);
このコードは、768 X 1024 の入力フォームで画像のグレースケール値を含むファイル「homer_matrix.txt」を生成します。