我想把字符串数组szWaterPara[6]={"00001234","00002345","00003456","00004567","00005678","00006789"}处理成{"1.234","2.345","3.456","4.567","5.678","6.789"},也就是说把每个元素变成数字后再除以1000,然后仍然表示成字符串的形式。
下面的代码是我写的,运行时提示“0x77fcb5c1指令引用的...内存,该内存不能为written”         
         double fWaterPara[6];
for(int i=0;i<6;i++)
{
fWaterPara[6]=atof(szWaterPara[i]);
                  fWaterPara[6]=fWaterPara[6]/1000;
szWaterPara[i].Format("%f",fWaterPara[6]);
}
该怎么处理,求专家指教了。

解决方案 »

  1.   

    fWaterPara[6]应该是fWaterPara[i]吧
      

  2.   

    是的,我原本的意思就是fWaterPara[i],是上面写错了。
      

  3.   

    至少应该改为:         double fWaterPara;
    for(int i=0;i<6;i++)
    {
    fWaterPara=atof(szWaterPara[i]);
                      fWaterPara=fWaterPara/1000;
    szWaterPara[i].Format("%f",fWaterPara[6]);
    }
    注意你的代码中使用了fWaterPara[6],而这是第7个元素!越界了。
      

  4.   

    关键的问题不是fWaterPara[i]这里。
      

  5.   

    double fWaterPara[6];
    for(int i=0;i<6;i++)
    {
    fWaterPara[i]=atof(szWaterPara[i]);
                      fWaterPara[i]=fWaterPara[i]/1000;
    szWaterPara[i].Format("%f",fWaterPara[i]);
    }
      

  6.   

    szWaterPara空间不足,因为转化为float后再转化为字符串,0是带着的。
      

  7.   

    别老惦记着fWaterPara[6];
    它标识第七个元素,在你的定义double fWaterPara[6];中是非法的:你只定义了六个元素的数组哪儿有第七个呀,要记着数组是以零作为起始元素的
      

  8.   

    CString szWaterPara[6]={"00001234","00002345","00003456","00004567","00005678","00006789"};
        double fWaterPara[6];
    for(int i=0;i<6;i++)
    {
    fWaterPara[i]=atof(szWaterPara[i]);
            fWaterPara[i]=fWaterPara[i]/1000;
    szWaterPara[i].Format("%f",fWaterPara[i]);
    }
    刚才经过调试,这样没问题.
      

  9.   

    %f改成%.3f ,for循环中的6改为i就可以了。
     
       CString szWaterPara[6] =
    {"00001234","00002345","00003456","00004567","00005678","00006789"
    };
        double fWaterPara[6];
        for(int i=0;i<6;i++)
        {
      fWaterPara[i]=atof(szWaterPara[i]);
             fWaterPara[i]=fWaterPara[i]/1000;
    szWaterPara[i].Format("%.3f",fWaterPara[i]);
         }
      

  10.   

    我知道原因了,如果没错的话,楼主声明是采用如下格式
    char* szWaterPara[6] =
    {"00001234","00002345","00003456","00004567","00005678","00006789"
    };
    但这样带来的问题是:
    指针szWaterPara[i]指向常量字符串而常量字符串的内容是不可以被修改的,所以会出现内存错误。而采用
    CString szWaterPara[6] =
    {"00001234","00002345","00003456","00004567","00005678","00006789"
    };
    则不会出现这样的错误。