fseek(pFile,0L,SEEK_SET);//文件指针指向文件头
fscanf(pFile,"%s%d%f%f",strLFTID,&nNumInSCTable,&dStartAngle,
&dAngleInterval);
m_strSCTableID=strLFTID;  // 该行不能赋值成功
m_nNumInSCTable=nNumInSCTable;
m_dStartAngle=dStartAngle;
m_dAngleInterval=dAngleInterval;运行到第二行的时候我在调试的时候都能看到strLFTID,nNumInSCTable,dStartAngle,dAngleInterval的值依次为str001,100,25.5,0.5, 继续执行以下四行,(其中m_strSCTableID为与一个CEdit绑定的CString变量, m_nNumInSCTable为与一个CEdit绑定的int变量, m_dStartAngle为与一个CEdit绑定的float变量, m_dAngleInterval为与一个CEdit绑定的float变量,),结果后三行都能正确赋值,只有m_strSCTableID=strLFTID不能赋值成功;执行后m_strSCTableID的值为空(之前已赋初值),为什么???  难道CString变量不能直接用”=”赋值吗?? 怪事???

解决方案 »

  1.   

    m_strSCTableID为与一个CEdit控件绑定的CString变量
      

  2.   

    怎么会这样?没道理的。
    m_strSCTableID确定为一CEdit控件的成员变量吗?
    试试 m_strSCTableID = "Test";  // 看看该行能不能赋值成功
      

  3.   

    网络杀手:
     我也是这么想的,我也直接使用
        m_strSCTableID = "good";
    调试证明是可以赋值的;但是就是  m_strSCTableID=strLFTID; 不能成功;而此时已经存在strLFTID="good"; 何解??
    另外声明一点:我在该对话框中使用了MSFlexGrid控件,应该不会有影响? MSFlexGrid控件与以上几个控件没有联系!!
      

  4.   

    谢谢各位,问题我已经解决了,我的解决方法是:
    添加一个临时CString变量:
    CString temp=strLFTID;
    m_strSCTableID=temp;但是不解为何是这样??!!
    fscanf(pFile,"%s%d%f%f",strLFTID,&nNumInSCTable,&dStartAngle,
    &dAngleInterval);//这一句我只是读出一个文本文件中的一行数据而已,数据排列如下:
    str001   100   25.5   0.5
    况且我执行完这句后,调试显示strLFTID,nNumInSCTable,dStartAngle,dAngleInterval四个变量的值已经等于文本文件中的值,为什么要用一个变量来过渡呢?
    好困惑哟!!!!
      

  5.   

    我怀疑是堆栈溢出之类的问题,strLFTID,nNumInSCTable,dStartAngle,dAngleInterval都
    是堆栈变量吧,在其下一行赋值后可能覆盖了strLFTID。你在strLFTID、nNumInSCTable之间定义一个变量(此变量不用做任何操作),再看是否能赋值成功?