我想把字符串数组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]);
}
该怎么处理,求专家指教了。
下面的代码是我写的,运行时提示“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]);
}
该怎么处理,求专家指教了。
for(int i=0;i<6;i++)
{
fWaterPara=atof(szWaterPara[i]);
fWaterPara=fWaterPara/1000;
szWaterPara[i].Format("%f",fWaterPara[6]);
}
注意你的代码中使用了fWaterPara[6],而这是第7个元素!越界了。
for(int i=0;i<6;i++)
{
fWaterPara[i]=atof(szWaterPara[i]);
fWaterPara[i]=fWaterPara[i]/1000;
szWaterPara[i].Format("%f",fWaterPara[i]);
}
它标识第七个元素,在你的定义double fWaterPara[6];中是非法的:你只定义了六个元素的数组哪儿有第七个呀,要记着数组是以零作为起始元素的
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]);
}
刚才经过调试,这样没问题.
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]);
}
char* szWaterPara[6] =
{"00001234","00002345","00003456","00004567","00005678","00006789"
};
但这样带来的问题是:
指针szWaterPara[i]指向常量字符串而常量字符串的内容是不可以被修改的,所以会出现内存错误。而采用
CString szWaterPara[6] =
{"00001234","00002345","00003456","00004567","00005678","00006789"
};
则不会出现这样的错误。