在代码中调用sprintf,printf总感觉差点什么

[复制链接]
68|4
地瓜patch 发表于 2026-5-27 16:37 | 显示全部楼层 |阅读模式

我在应用程序中使用 sprintf 时该函数第一次将浮点数转换为字符串时完全正常,但第二次及之后调用时,小数点位置会出现乱码字符,数字本身却显示正常。

乱码会持续出现在后续所有调用 sprintf 的地方,且乱码内容固定不变,仅在浮点数有小数位时出现。

例如:第一次printf输出:MCU Bat : 3.15 V(正常)

第二次printf输出:MCU Bat : 3"KOq@=xZ15 V(小数点变成乱码)

格式字符串为:MCU Bat : %.2f V\r 修改格式字符串无法解决问题,程序不会进入硬件错误,也不会崩溃。

xuanhuanzi 发表于 2026-6-3 16:22 | 显示全部楼层
你会有这种感觉,99% 是因为这两个函数天生的缺陷:不安全、容易崩溃、代码丑、现代语言 / 工程里几乎不推荐用。
gejigeji521 发表于 2026-6-5 18:48 | 显示全部楼层
你会有这种感觉太正常了,绝大多数现代开发者都会觉得纯 C 风格的 sprintf/printf 别扭、不安全、难维护、容易埋坑。
kepe 发表于 2026-6-9 16:48 | 显示全部楼层
8051 / 小资源单片机的经典坑:标准库浮点 sprintf 内存越界 / 重入破坏
MessageRing 发表于 2026-6-10 11:20 | 显示全部楼层
改用 snprintf,指定缓冲区大小,避免溢出。检查栈内存是否足够。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:出一块TI-PLABS-AMP-EVM

2996

主题

17970

帖子

31

粉丝
快速回复 在线客服 返回列表 返回顶部
0