C 使用fwrite和双指针将二维数组输出到文件
我动态分配了一个2D数组,使用双指针访问,如下所示: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
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);
}