私は構造の3D配列を持っています。3D グリッドは、3 つの辺のそれぞれが等しいようなものです。3D グリッドの各セルには、色、温度、B(x)、B(y)、B(z) の 5 つの要素があります。構造体の配列の各セルに、要素ごとに 1 つずつ、5 つのバイナリ ファイルを設定する必要があります。
構造体の配列は次のようになります。
struct physical
{
float color;
float temperature;
float Bx,By,Bz;
};
extern struct physical ***physical;
私が必要としているのは、C で配列にデータを入力する方法を考えることです。
バイナリ ファイルから構造体の配列にデータを読み取るために実装した次のコードがあります。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int i,j,k,ibox; /* Loop indices for the physical grid */
FILE *p,*q,*r,*s,*t;
p = fopen("phys_col_0107.bin","rb");
q = fopen("phys_temp_0107.bin","rb");
r = fopen("phys_Bx_0107.bin","rb");
s = fopen("phys_By_0107.bin","rb");
t = fopen("phys_Bz_0107.bin","rb");
if (!p) { printf("Unable to open color file!"); return 0; }
else if (!q) { printf("Unable to open the temp file!"); return 0; }
else if (!r) { printf("Unable to open the Bx file!"); return 0; }
else if (!s) { printf("Unable to open the By file!"); return 0; }
else if (!t) { printf("Unavle to open the Bz file!"); return 0; }
for ( j = 0 ; j < ny ; j++ )
{
for (k=0;k<nz;k++)
{
for (i=0;i<nx;i++)
{
fread( &physical[i][j][k].color , sizeof(physical[i][j][k].color) , 1 , p ) ;
fread( &physical[i][j][k].temperature , sizeof(physical[i][j][k].temperature) , 1 , q ) ;
fread( &physical[i][j][k].Bx , sizeof(physical[i][j][k].Bx) , 1 , r ) ;
fread( &physical[i][j][k].By , sizeof(physical[i][j][k].By) , 1 , s ) ;
fread( &physical[i][j][k].Bz , sizeof(physical[i][j][k].Bz) , 1 , t ) ;
}
}
}
fclose(p);
fclose(q);
fclose(r);
fclose(s);
fclose(t);
私はこれについて正しい方法で行っているかどうかを知る必要があります.....ありがとう!!