关于keil中sprintf()函数死机的问题

       前段时间在使用KEIL V4 来给我的LPC1768单片机编写程序,但程序总是有bug,经常有时候能运行,有时候又会死机,跟踪调试了一下,发现每次都在sprintf()函数这边出问题,到这地方程序就死掉了,这一句基本形式如下面这样:

sprintf(str,"%0.2f",val);

什么原因呢?我以前用KEIL V2 给stc单片机开发过商业软件,这地方还没出现过问题,难道V4 的arm版本就不行了,网上搜索了下,遇到问题的人不少,有用的答案很少。

通过长时间的摸索,好像是这个版本里不能用sprintf()函数将浮点型数值格式化为字符串。经过我多天的调试,并不是说这个函数不能运行,是偶尔能运行的。但是如果用这个函数将一个整形数格式化为字符串是没问题的,所以不妨把程序稍微改改就可以用了,比如讲float a=12.356;格式化成char str="12.356",改成下面这样就行了

sprintf(str,''%d.%03d",(unsigned int)a,(unsigned int)(a-(unsigned int )a)*1000)

这样问题就解决了。

  

相互关注,共同进步!

 

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值