int fLength;
    FinalDir="D:\\xsDOS\\data\\TYMD.DAT";
 TYMD.DAT是二进制文件,里面存一些数据,是什么数据目前我也不清楚,大概是年月日等时间
    if(pFile.Open(FinalDir,CFile::modeRead|CFile::modeNoTruncate|CFile::typeBinary))
{
        int fLength=pFile.GetLength();
BYTE* lpBuffer=new BYTE[fLength];
ASSERT(lpBuffer!=NULL);
pFile.Read(lpBuffer,fLength);//疑问,像这样是不是应该能读到数据了???可是我用watch查看lpbuffer的数据却只是一个数字1,事实肯定不是这个数的.我想知道怎么处理才能获得它的真实数据. short data1,data2;
memcpy(&data1,&lpBuffer[0],8);
memcpy(&data2,&lpBuffer[8],2);//
delete lpBuffer
lpBuffer=NULL;

pFile.Close();
}

解决方案 »

  1.   

    BYTE* lpBuffer=new BYTE[fLength+1];.。。
    lpBuffer[fLength] = '\0';
      

  2.   

    谢谢啊BYTE* lpBuffer=new BYTE[fLength+1];我明白
    但这样写问题还是没解决呢
      

  3.   

    pFile.SeekToBegin();
    pFile.Read(lpBuffer, fLength);
      

  4.   

    你已经得到了数据,Watch只是按照类型来显示的,如果是char,unsigned char那个它会按照字符串来显示,碰到 0x0就不再显示了.
    你读到的数据可能是0x31 0x00 ...那么就只显示一个1了
    类似于如下测试代码
    unsigned char *pBuf = new unsigned char[8]; //这一步显示 屯屯屯屯 后面未知
    memset(pBuf,0,8); //这一步显示空
    pBuf[0] = '1'; //这一步watch显示1
    delete []pBuf;还是需要知道保存的格式.不知道就猜 Hoho
      

  5.   

    另外short data1,data2;
    memcpy(&data1,&lpBuffer[0],8);
    memcpy(&data2,&lpBuffer[8],2);//这样的方式,程序会出错的。
      

  6.   

    xing_xing_xing(ζ未名ζ) (
     Mackz(在相互) (
    你们的回答很好
    看来只能慢慢猜了 当然 lixiaosan(小三)也指出不少错误 呵呵