如题:如何使用CFile替换二进制文件的某行的内容?
如果不行,
用FILE 如何打开二进制文件,并将指针指向文件尾,继续添加数据?比如一个结构体
struct
{
int a;
char c[];
int d;
}
写入文件后,
比如 d = 9;
然后向这个二进制文件添加3个数据后,
将 d 改为12,
请问如何替换?

解决方案 »

  1.   

    d是表示数据块的个数吧?否则我就是没看懂,呵呵你是要每写入一个结构体数据块,就同步更新先前已经写入的各块的struct.d? 什么需求非要这样做?建议做一个文件头,文件的统计放在头上,如块个数,文件版本号针对你的问题,可以这样做,添加时:
    1. Open(pszFileName, CFile::modeWrite, &e);
    2. SeekToEnd
    3. SeekToBegin
    4. struct a; Read(&a, sizeof(a)); a.d++;
    5. Write(&a, sizeof(a)...
    6. Seek
    循环5-6
      

  2.   

    CFile file;
    open
    seek
    read
    seek
    write
    CFile默认就是二进制读取的
      

  3.   


    你把文件头读取出来,然后修改记录后,重新写到原来的位置(文件头)就好了,INT型是四字节的,你现在的数据量并不发生溢出。关键是你要以追加的方式打开就好了。记得指针的移位。
    记得读取整个结构体出来。然后将这个结构体重新写回去就可以。
      

  4.   

    Seek( sizeof(struct) - sizeof(int), CFile::begin );
    Write( &d, sizeof(int) );
    SeekToEnd( );
    // append new items