我没有搞懂你定义的temp2是什么意思,初始化时怎么只把temp2[2]赋值为0?
char temp2[2];
temp2[2]=0;
还有既然你Input.Read(temp2,1);那么用一个长度为2的字符串做什么?如果你要一个字符一个字符的读取,直接定义成一个char不就得了,不知道下面修改的程序合不合你的意思:
double tt[5];
char temp2;
CString m_read,m_temp;
m_read=m_temp="";
CString pp;
int i=0;
CFile Input("1.txt",CFile::modeRead|CFile::shareDenyWrite);
for(;i<5;)
{
Input.Read(&temp2,1);
m_temp=temp2;
if(m_temp!='p')//把p作为数据间的分隔符
{
m_read=m_read+m_temp;//
}
else
{
m_read.Remove('?');
tt[i]=atof(m_read);
i++;
m_read="";
}
}

解决方案 »

  1.   

    char temp2[2];
    这个错了,你
    m_temp=temp2;
    if(m_temp!='p')//把p作为数据间的分隔符
    {
    m_read=m_read+m_temp;//
    加的时候,把后面一个没有用的东西加了进去,CString +操作是对的,你看看内存的变化就知道了。
      

  2.   

    在读取之前,把temp2的全部字符清空,temp2[2]=temp2[1]=temp2[0]=0
    我碰到过这种情况,照我的做没问题。
      

  3.   

    char temp2[2];
    temp2[2]=0;
    有temp2[2]这个元素吗?
    temp[0],temp2[1];
      

  4.   

    m_read=m_temp="";//可能把m_temp 的地址给了 m_read
    改为 m_read.Empty();
    m_temp.Empty();