定义了两个CString变量,存放的是字符串格式的浮点数,如下:
CString s1 = "0.01";
CString s2 = "0.1";
分别调用atof将其转换为double类型,atof(s2)运行正确,atof(s1)时,程序出现错误,弹出一对话框:"0x5f43934a"指令引用的"0x0202a17c"内存。该内存不能为"read"。
要终止程序,请单击”确定“。
要调试程序,请单击”取消“。又试了几个其他的值,好像小数点后有两位数或多于两位数时都会出现这个错误,什么原因引起的?
CString s1 = "0.01";
CString s2 = "0.1";
分别调用atof将其转换为double类型,atof(s2)运行正确,atof(s1)时,程序出现错误,弹出一对话框:"0x5f43934a"指令引用的"0x0202a17c"内存。该内存不能为"read"。
要终止程序,请单击”确定“。
要调试程序,请单击”取消“。又试了几个其他的值,好像小数点后有两位数或多于两位数时都会出现这个错误,什么原因引起的?
解决方案 »
- 如何实现,多客户端与服务器同时传输文件?
- win32编程经常会不知道用哪一个函数去实现功能这个该怎么办?
- 中文输入法下响应OnChar的问题
- CDC内容缩小 保存成bmp怎么弄
- 怎样能够获得0.0001毫秒级别的时间片段!!
- 按钮贴图后为什么闪烁?
- 请问如何用NetMeeting的SDK??我只想用其中的语音通话部分!
- 急急急急急急急急急急急!在线等待!!!!!!!!!!!!!!
- 我想找工作。只有14个月的MFC开发经验。
- 请问:多文档程序中,建立子框架窗口的方法有哪些?先谢了
- 急!!!来者有分! 直接使用socket访问一个HTTP服务器上的一个Web Page, 如何使用SOCKS代理呀
- 一个本来是用udp来通信的客户端和服务器。在中间如果再多加一个代理要怎么做?
val += 1.0;
CString to_conv("0.11");
val = atof(to_conv);因为VC++6在加载浮点库的方面有点问题,你看看是不是这个导致的……
函数原型:
void AutoScan_dp(double start ,double end ,double step);
调用如下:
CString szStart(dlg.m_sCurStart);
CString szEnd(dlg.m_sCurEnd);
CString szStep(dlg.m_sCurStep);
start = atof(szStart);
end = atof(szEnd);
step = atof(szStep);
AutoScan_dp(start,end,step);
当step为0.1时,上面的调用结果正确。当step为0.01时,即出现开始描述的错误,将最后一行函数调用注释掉仅仅是转换时就没有错误,这是为何?用了指针、引用两种方式传递参数均是相同的现象,怎么解释?
for (double dCurrent = start; dCurrent < end; dCurrent += step,i++)
{ ... }
循环体内没有对start,end,step进行任何操作,也就是说三个参数仅做for循环的判断使用,这样用有什么不妥吗?
函数AutoScan_dp里有以下语句:
char szCurrent[10];
_gcvt(dCurrent,7,szCurrent);
将szCurrent的大小改为50即可,多谢各位。
不过我只转换了其中的7位,那么szCurrent为10位应该也够用了,为何还出错?