将2d数组写入C中的文件

我曾经使用下面的代码将1D数组写入文件
FILE *fp;
float floatValue[5] = { 1.1F,2.2F,3.3F,4.4F,5.5F };
int i;

if((fp=fopen("test","wb"))==NULL) {
    printf("Cannot open file.\n");
}

if(fwrite(floatValue,sizeof(float),5,fp) != 5)
    printf("File write error.");
fclose(fp);

/* read the values */
if((fp=fopen("test","rb"))==NULL) {
    printf("Cannot open file.\n");
}

if(fread(floatValue,fp) != 5) {
    if(feof(fp))
        printf("Premature end of file.");
    else
        printf("File read error.");
}
fclose(fp);

for(i=0; i<5; i++)
    printf("%f ",floatValue[i]);

我的问题是,如果我想写和读取2D数组?

解决方法

您可以使用相同的方法…只需进行以下更改
float floatValue[3][5] = {{ 1.1F,5.5F },{ 6.6F,7.7F,8.8F,9.9F,8.8F },{ 7.7F,6.6F,5.5F,3.3F }};
int i,j;

if(fwrite(floatValue,3*5,fp) != 3*5)

if(fread(floatValue,fp) != 3*5) {

for(j=0; j<3; j++) {
    for(i=0; i<5; i++)
        printf("%f ",floatValue[j][i]);
    printf("\n");
}

当然,请注意,这不是保存/加载数据的最佳方法,尤其是如果您希望在不同编译器/系统之间或甚至未来之间具有一些兼容性.保存和恢复的主题通常被命名为序列化,只需很小的开销就可以获得更大的灵活性,尤其是在数据模型变得更复杂的情况下.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...