碰到一个棘手问题,请大家指教:)
读文件时
CString str=_T("");
m_f.Seek(-128, CFile::end);
m_f.Read(str.GetBuffer(3), 3);在Dubug中str的值为{0x009278a8 "TAG妄?}
而正确的str的内容应该是"TAG"

解决方案 »

  1.   

    楼上的正解
    char str[4] = {0};
    m_f.Seek(-128, CFile::end);
    m_f.Read(str, 3);
      

  2.   

    用CString str而不是用char str[4]该怎么解决?
      

  3.   

    m_f.Read(str.GetBuffer(3), 3);
    str的分配长度为3,怎么结果会是这么一串呢  "TAG妄?
      

  4.   

    CString str=_T("");
    m_f.Seek(-128, CFile::end);
    m_f.Read(str.GetBuffer(3), 3);
    str.GetBuffer[3]=0;
      

  5.   

    应该是:
    CString str=_T("");
    m_f.Seek(-128, CFile::end);
    m_f.Read(str, 3);
    str[3]=0;
      

  6.   

    有必要加零么,CString 自动有这个功能吧,用MAX_PATH
    CString str=_T("");
    m_f.Seek(-128, CFile::end);
    m_f.Read(str.GetBuffer(MAX_PATH), MAX_PATH);
    str.ReleaseBuffer(-1)//这句要加
      

  7.   

    3jaja(3++输入法)提出的方法不行:error C2664: “CFile::Read” : 不能将参数 1 从“CString”转换为“void *”
      

  8.   

    运行着几条语句:
    CString str=_T("");
    m_f.Seek(-128, CFile::end);
    m_f.Read(str.GetBuffer(3), 3);
             str.ReleaseBuffer();
    有弹出对话框说是:nLength<=GetDate()->nAllocLength 错误!不解阿
      

  9.   

    CString str = _T("") ;
    相当于 str[0] = 0 ;
    str[1],str[2] …… 还没初始 ;