我tmpfile()
用来创建一个文件(所以它会自动以二进制模式打开)。
然后我floats
用fwrite()
. 所有这些floats
都> 0。
问题是,当我尝试用 读取这些值(>0)时fread()
,我得到负值!
我写的值out[i][j][couche]
是可以的(因为它们的定义,它们不可能<0)。问题在最后(fread
)。
void flou_bis (FILE * fp, PIXRVB **out, PIXRVB **in, int np, int nl, int rayon, int couche){
int i,j,k,l,nb;
float ret1, ret2;
float rCouche;
/* Other things not relevant..
(process the values of array out[][][] ...)*/
for (i=0; i<nl; i++)
{
for (j=0; j<np; j++)
{
fwrite ( &(out[i][j][couche]) , sizeof(float), 1, fp);
}
}
rewind(fp);
/*fsync(fp); // Useless
rewind(fp);*/
printf("%d float read\n", fread ( &ret2, sizeof(float), 1, fp)); /*Here is the problem!!! */
printf("%f\n", ret2);
}