硬汉嵌入式论坛

 找回密码
 立即注册
查看: 8534|回复: 5
收起左侧

[有问必答] stm32中使用sprintf函数

[复制链接]

17

主题

32

回帖

83

积分

初级会员

积分
83
发表于 2018-7-21 16:02:52 | 显示全部楼层 |阅读模式
由于要和触摸屏进行通信,所以要将u32 err_key格式化为字符串后发送给触摸屏。
其中char err_key_disbuf[4];
sprintf(err_key_disbuf,"%8x",err_key);
但是在执行这条语句时直接会HardFault_Handler,请教一下版主,这是由于什么错误造成的?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107144
QQ
发表于 2018-7-21 16:34:21 | 显示全部楼层
err_key_disbuf[4];  

buf定义小了。
回复

使用道具 举报

17

主题

32

回帖

83

积分

初级会员

积分
83
 楼主| 发表于 2018-7-21 16:50:54 | 显示全部楼层
eric2013 发表于 2018-7-21 16:34
err_key_disbuf[4];  

buf定义小了。

请教版主,定义为 8 都不可以,定义9之后才能正常,那就是将字符串的结束符'\0'也要计算在内喽?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107144
QQ
发表于 2018-7-21 17:08:51 | 显示全部楼层
鬼脚七 发表于 2018-7-21 16:50
请教版主,定义为 8 都不可以,定义9之后才能正常,那就是将字符串的结束符'\0'也要计算在内喽?

别开个正好,我使用这个函数一般都开的比较大,给他100个。

因为大部分时候仅仅是作为局部变量,使用的栈空间,函数退出就释放了,所就开的很大,防止这种问题。
回复

使用道具 举报

17

主题

32

回帖

83

积分

初级会员

积分
83
 楼主| 发表于 2018-7-21 17:25:26 | 显示全部楼层
eric2013 发表于 2018-7-21 17:08
别开个正好,我使用这个函数一般都开的比较大,给他100个。

因为大部分时候仅仅是作为局部变量,使用 ...

谢谢版主
回复

使用道具 举报

0

主题

159

回帖

159

积分

初级会员

积分
159
发表于 2018-8-16 10:32:12 | 显示全部楼层
建议用snprintf 这个函数安全点,也可以很容易找出问题
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-20 11:03 , Processed in 0.268259 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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