Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用fwrite和双指针将二维数组输出到文件_C_File Io_Multidimensional Array_Fwrite - Fatal编程技术网

C 使用fwrite和双指针将二维数组输出到文件

C 使用fwrite和双指针将二维数组输出到文件,c,file-io,multidimensional-array,fwrite,C,File Io,Multidimensional Array,Fwrite,我动态分配了一个2D数组,使用双指针访问,如下所示: 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 } 我也尝试过: fw

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

  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(float), ((50*30)-1), ofp);
我是否正在尝试输出这个2D数组

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

我知道
heat[tI-1][sections-1]
也确实在2D数组的范围内。我使用它是因为我知道这是我掌握的最大的元素


我的输出是许多空值,有时是奇怪的系统路径

您不能一次就把它写出来,因为heat数组中的每个项都分配了一个单独的内存段。您需要循环加热阵列,并一次保存一个零件

你需要做更多类似的事情:

for (n = 0; n < tI; n++)
  fwrite(heat[n], sizeof(float), sections, ofp);
(n=0;n fwrite(炉号[n],尺寸(浮子),截面,ofp);
我知道您应该使用:

for(int n = 0; n < tI; n++)
{
  fwrite(heat[n], sizeof(float),sections, ofp);
}
for(int n=0;n
我刚刚用示例代码编辑了我的答案,这些代码看起来像是我直接从您那里复制的,但我想向您保证情况并非如此。直到我完成编辑后才看到您的答案。@JamesHolderness@Giswin-Hmm,我正在尝试这段代码,但仍然会遇到很多奇怪的字符。我可以使用fwrite将浮点写入二进制吗?或者我可能正在成功地写入文件,但Notepad++无法读取二进制文件?如果您希望输出的格式是人类可读的,这是一个完全不同的答案。你到底在期待什么?一行中的所有数字是分隔的还是逗号分隔的?每行一个号码还是每行一个区段?基本上,您需要使用类似于
fprintf
的东西。我希望fwrite能够以人类可读的二进制文件写入我的文件,但这不是必需的。它是否以非人类可读的格式编写?如果是这样的话,那也没关系,只要能解释这些奇怪的角色就行。它将准确地写出存储在内存中的内容,即浮点的二进制表示,1500次(30*50)。
for(int n = 0; n < tI; n++)
{
  fwrite(heat[n], sizeof(float),sections, ofp);
}