是这样的一个文件.dat类型  加密了
要读出来 已知加密方式
怎么样已二进制读取
以下是我读一般文件的程序 不知道怎么样已二进制读入??
CString strTempitem;
FILE* pFileitem=fopen("..... .dat","r");
for(int l=0; l<4208; l++)
{
char cSqlitem[100];
memset(cSqlitem,0,sizeof(cSqlitem)); fgets(cSqlitem,sizeof(cSqlitem),pFileitem);
strTempitem = cSqlitem;
 }

解决方案 »

  1.   

    上面 fopen  的第二个参数由 r 改成 rb
      

  2.   

    二进制就不要用CString,否则遇到一个0,后面内容就取不到了。
      

  3.   

    char    *pMap;
    HANDLE  hFile;
    DWORD dw, dwFSize;
    CString cFilePath("e:\\..\\***.dat"); hFile = ::CreateFile(
    (LPCTSTR)szFilePath,
    GENERIC_READ,
    FILE_SHARE_READ,
    NULL,
    OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL,
    NULL); if (hFile == INVALID_HANDLE_VALUE)
    return false; dwFSize = GetFileSize(hFile, NULL);//把文件读入内存数组
    pMap = new char[dwFSize];
    if (!pMap) return false;
    if (!ReadFile(hFile, pMap, dwFSize, &dw, NULL))
    return false;
    return true;
    //使用pMap
    ...
    delete pMap;
    pMap  = NULL;
      

  4.   

    哦,上面 “//使用pMap” 前多贴了一个 “return true”
      

  5.   

    char *UNNpcData(char *in ,char *out,long size)
    {
    for(int i=0; i<size; i++)
    {
    out[i] = in[i]^0xba;
    }
    return out;
    }
    void CUNNPCDlg::OnButton1() 
    {
    // TODO: Add your control notification handler code here
    char outbuf[100];
    int i = 0;
    memset(outbuf,0,sizeof(outbuf));

    FILE* pFile=fopen("D:\\....\\npc.dat","rb");
    for(i; i<1096;i++)
    {
    char cSql[100];
    memset(cSql,0,sizeof(cSql)); fgets(cSql,sizeof(cSql),pFile); UNNpcData(cSql,outbuf,sizeof(cSql));

    }
    fclose(pFile);}
     高手给指正下那里不对  解不出来
      

  6.   

    用BYTE outbuf[100];而不是char outbuf[100];是个好习惯