我有一个 3D 结构数组。3D 网格使得三个边中的每一个都相等。3D 网格的每个单元都有 5 个元素,例如颜色、温度、B(x)、B(y) 和 B(z)。我必须用 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);
我只需要知道我是否以正确的方式进行此操作.....谢谢!