我动态分配了一个二维数组,使用双指针访问,如下所示:

  float **heat;
  heat = (float **)malloc(sizeof(float *)*tI); // tI == 50
  int n;
  for(n = 0; n < tI; n++){ // tI == 50
            heat[n] = (float *)malloc(sizeof(float)*sections); // sections == 30
    }

在用值填充所有元素后(我确定它们都被正确填充),我
尝试将其输出到这样的文件:
fwrite(heat, sizeof(heat[tI-1][sections-1]), ((50*30)-1), ofp);

我也刚试过:
fwrite(heat, sizeof(float), ((50*30)-1), ofp);

我想输出这个二维数组吗?

我知道我的文件 I/O 正在工作(p 的文件指针不为空,并且以十进制格式写入文件),但是当我尝试使用 fwrite 写入时,非常奇怪的字符和消息被输出到我的输出文件以二进制形式。

我知道 heat[tI-1][sections-1] 也确实在二维数组的范围内。我只是在使用它,因为我知道这是我持有的最大元素。

我的输出是很多 NULL,有时是奇怪的系统路径。

最佳答案

据我所知,您应该使用:

for(int n = 0; n < tI; n++)
{
  fwrite(heat[n], sizeof(float),sections, ofp);
}

关于c - 使用 fwrite 和双指针将二维数组输出到文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16470949/

10-10 20:30