为了实现一个功能:
将文件开头的4个字节删除,并将其后面的内容移到开头

解决方案 »

  1.   

    能不能具体些
    你们看看我做的,就是在文件结尾的地方出现了错误
    CFile file2((LPCTSTR)filename,CFile::typeBinary|CFile::modeReadWrite); TCHAR szBuffer[3001];
    file2.Read(szBuffer,4);
    DWORD dwRead=0; 
    dwRead=file2.Read(szBuffer,2996);
    file2.Seek(3000,CFile::end);
    file2.SeekToBegin();
    file2.Write(szBuffer,dwRead);
    file2.SeekToBegin();
    file2.Close();
      

  2.   

    试试这个:
    CFile file2((LPCTSTR)filename,CFile::typeBinary|CFile::modeReadWrite);TCHAR szBuffer[3001];
    memset(szBuffer, '\0', 3001);
    DWORD dwRead = 0;
    file2.Seek(4, CFile::begin);
    dwRead = file2.Read(szBuffer, 2996);
    file2.SeekToBegin();
    file2.Write(szBuffer, dwRead);
    file2.Flush();
    file2.Close();
      

  3.   

    用2个文件要好办得多。
    FILE *fpS,*fpD ;
    fpS = fopen( strPath1, "rb" ) ;
    fpD = fopen( strPath2, "w" ) ;
    fseek( fpS, 4, SEEK_SET ) ;
    int ch = EOF;
    while( (ch = fgetc(fpS))!=EOF ) fputc( ch, fputs(fpD) ) ;
    fclose(fpD);
    fclose(fpS);
    这里用了运行库,要改成MFC类,再加上错误判断应该容易嘛。
      

  4.   

    CFile file2;
    file2.Open("c:\\test.txt",CFile::modeReadWrite);
    long cont;
    cont=file2.GetLength()-4;
    file2.Seek(4,CFile::begin);
    char *buf=new char[cont];
    file2.Read(buf,cont);
    file2.Close();
    file2.Open("c:\\test.txt",CFile::modeReadWrite|CFile::modeCreate);
    file2.Write(buf,cont);
    file2.Close();