我需要使用一个用C编写的程序以这种方式读取二进制文件中的数据。
nCnt = 0;
for (i=0;i<h.nsph;++i) {
fread(&gp,sizeof(struct gas_particle),1,fp);
if (bGas) {
kd->p[nCnt].iOrder = nCnt;
for (j=0;j<3;++j) kd->p[nCnt].r[j] = gp.pos[j];
++nCnt;
}
}
以上代码不是我正在使用的程序的全部代码,而只是与我的问题有关的部分。我需要读取nCnt
粒子的位置,即每个粒子的坐标。
我在一个Python数组中有这些位置,它看起来像这样:
pos=array([[[ 0.4786236 , 0.49046784, 0.48877147],
[ 0.47862025, 0.49042325, 0.48877267],
[ 0.47862737, 0.49039413, 0.4887735 ],
...,
[ 0.4785084 , 0.49032556, 0.48860968],
[ 0.47849332, 0.49041115, 0.48877266],
[ 0.47849161, 0.49041022, 0.48877176]]])
如何将这个数组写入二进制文件,以便C代码可以正确读取?
numpy
数组? - Martijn Pietersstruct gas_particle
的声明。另外,fread()
(像所有的I/O操作一样)可能会失败,应该检查其返回值。 - unwind