关于sprintf的问题

2019-07-21 04:04发布

今天调试时LED矩阵时,发现一个问题,使用sprintf时,首位会不定时出错!
平时使用sprintf将字符串显示到TFT上,不会发现问题,因为LCD的显示字符串函数有判断字符是否越界的功能,如果越界了,则不更新,所以不会显示错误。
但是,我现在是直接打在LED矩阵上的,函数没有检测越界的功能,而且LED矩阵是不断更新的,所以出错了就会显示。

如上图,首字符本身为空格,但是有时成了0XA0。 于是,我用了最笨的方法,忽略首字符,即首字符输入空格,写入与读取是跳过首字符,至于首字符是什么就不管他了。
但是,这明显不是好方法,各位前辈能指导一下讲解一下原因和解决方发吗?
环境是MDK5.1,使用ucos系统,使用sprintf函数时为求稳定甚至调度器都关了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
正点原子
1楼-- · 2019-07-21 08:13
没遇到过这问题哦,什么情况下,会多一个0XA0??
styleno1
2楼-- · 2019-07-21 11:30
刚刚确认了下,会加结束符,但不检查边界,推荐使用snprintf()。
托卡玛克
3楼-- · 2019-07-21 14:59
 精彩回答 2  元偷偷看……
正点原子
4楼-- · 2019-07-21 19:46
回复【4楼】托卡玛克:
---------------------------------
真没遇到过,我的计算器例程,里面用了大量sprintf来处理数据,没出遇到过你说的问题。

一周热门 更多>