首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

封存动态二维数组到文件的内容不对

2012-09-25 
保存动态二维数组到文件的内容不对需要创建一个4*10的动态二维数组并将其中的数据保存到文件,按计算文件应

保存动态二维数组到文件的内容不对
需要创建一个4*10的动态二维数组并将其中的数据保存到文件,按计算文件应该是40字节大小,但保存后有43个字节(其中的0D是多余的),有3个字节不知道是怎么来的,请问如何解决这个问题

C/C++ code
#include "stdafx.h"#include <fstream>using namespace std;int main(int argc, char* argv[]){    //动态二维数组    char (*p)[4];    int r=0, c=0;        //分配二维数组内存    p = new char[10][4];    //赋值    for (r=0; r<10; r++)    {        for (c=0; c<4; c++)        {            p[r][c] = r + c;  // 此处填充不同的值在保存时会有不同的结果,如 p[r][c] = r + c * 20;        }    }        //显示    for (r=0; r<10; r++)    {        printf("%08X ~ %08X  ", &p[r][0], &p[r][3]); //地址范围        for (c=0; c<4; c++)        {            printf("p[%d][%d]: %02X  ", r, c, p[r][c]);        }        printf("\n");    }        //保存到文件    ofstream f("1.txt");    if (f)    {        f.seekp(0, ios::beg);        f.write((char*)p[0], 10 * 4 * sizeof(char));        f.close();        printf("File Saved to 1.txt\n");    }    else    {        printf("Create 1.txt Faild!\n");    }        //释放二维数组内存    delete[] p;        return 0;}


[解决办法]
用fwrite()/fputc()按字节写入看看。
建议用fopen()/fwrite()/fputc()/fgetc/fread()/fclose()系列函数。
[解决办法]
简单地说,打开文件的时候别忘了写"wb"的那个b

热点排行
Bad Request.