Je dispose d'un réseau de structures en 3D. La grille 3D est telle que chacun des trois côtés est égal. Chaque cellule de la grille 3D a 5 éléments, disons couleur, température, B(x), B(y) et B(z). Je dois remplir chaque cellule du tableau de structures avec 5 fichiers binaires, un pour chaque élément.
Le tableau des structures ressemble à ceci :
struct physical
{
float color;
float temperature;
float Bx,By,Bz;
};
extern struct physical ***physical;
J'ai besoin d'une idée de la manière dont je pourrais remplir les tableaux en C.
J'ai mis en place le code suivant pour lire les données des fichiers binaires dans le tableau de structures :
#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);
J'ai juste besoin de savoir si je m'y prends de la bonne manière. ..... merci !!