有个变量 int GDValues[1200] ={0}
竟然无缘无故的数值变动来变动去. 我禁用了所有与这个变量相关的代码仍然无法阻止数值变动. 真是奇怪了…长这么大第一次遇到这种情况.
就想看看是那段代码在修改它. 不知道Keil有没有这个功能. 最后竟然找到了. 文章如下. 使用这个功能要先进入断点, 光标放在有效的行上, 然后在
如下图操作.
参考自.
1.首先进入仿真调试,打开想要查看的变量的watch窗口,在改变量右击,出现Set Acces服务器托管网s Break服务器托管网point,
2.进入选项框 选中Write,然后定义,关闭窗口,运行软件,当改变量地址的值被篡改,则软件停止运行,便于查看内存溢出的现象
等中断时发现, 竟然是被sprintf() 给修改了.
于是各种百度.貌似无果, 最后不得不放弃sprintf , 从原理上讲, sprintf 是可以自己实现的, 这样方便以后的开发. 毕竟解析json比解析二进制数据要方便的多. 临时比较急所以就暂时放弃了. 谁有空可以给写一个c语言版本的,json序列化工具.
下面是自己写了一个double转字符串的小工具.
里面还是用的sprintf 它对%d , 不会出现什么问题. %f就不行.
如果更彻底一些可以考虑自己从0实现一个.
void doubleToStr(double v,int digits,char outstr[] )
{
//这里并没有考虑负数, 一般也不会出现负数, 如果有负数,请自行处理.
int zhengshu= (int)v;
int xiaoshu = 0;
if(digits==1)
{
xiaoshu = (int) ((v - zhengshu)*10);
}
if(digits==2)
{
xiaoshu = (int) ((v - zhengshu)*100);
}
if(digits==3)
{
xiaoshu = (int) ((v - zhengshu)*1000);
}
sprintf(outstr,"%d.%d",zhengshu,xiaoshu);
return ;
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 设计模式-组合模式
前言
组合模式使用场景
组合模式优缺点文章目录 前言 组合模式的核心概念 为什么要使用组合模式? 组合模式的示例代码 组合模式使用场景 组合模式优缺点 前言 当我们面对需要处理树状结构的问题时,组合模式(Composite Pattern)是一个非常有用的设计模式。它属于结构型设计模式的一种,主要…