OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8362|回复: 4

关于sprintf的问题

[复制链接]

9

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2013-2-13
在线时间
0 小时
发表于 2015-1-10 16:56:58 | 显示全部楼层 |阅读模式
5金钱
今天调试时LED矩阵时,发现一个问题,使用sprintf时,首位会不定时出错!
平时使用sprintf将字符串显示到TFT上,不会发现问题,因为LCD的显示字符串函数有判断字符是否越界的功能,如果越界了,则不更新,所以不会显示错误。
但是,我现在是直接打在LED矩阵上的,函数没有检测越界的功能,而且LED矩阵是不断更新的,所以出错了就会显示。


如上图,首字符本身为空格,但是有时成了0XA0。
于是,我用了最笨的方法,忽略首字符,即首字符输入空格,写入与读取是跳过首字符,至于首字符是什么就不管他了。
但是,这明显不是好方法,各位前辈能指导一下讲解一下原因和解决方发吗?
环境是MDK5.1,使用ucos系统,使用sprintf函数时为求稳定甚至调度器都关了。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-1-10 23:53:03 | 显示全部楼层
没遇到过这问题哦,什么情况下,会多一个0XA0??
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

28

主题

1489

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1656
金钱
1656
注册时间
2013-7-24
在线时间
1 小时
发表于 2015-1-11 00:05:34 | 显示全部楼层
刚刚确认了下,会加结束符,但不检查边界,推荐使用snprintf()。
于20150522停用该账号:http://www.microstar.club
回复

使用道具 举报

9

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2013-2-13
在线时间
0 小时
 楼主| 发表于 2015-1-13 13:44:32 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
就是如果不断地sprintf的话,接收数组的首字符会不定期出错。如首字符本身是空格,有时会变成0xA0。不知道其他人会不会有这样的问题?。。。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-1-13 19:40:56 | 显示全部楼层
回复【4楼】托卡玛克:
---------------------------------
真没遇到过,我的计算器例程,里面用了大量sprintf来处理数据,没出遇到过你说的问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 13:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表