硬汉嵌入式论坛

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

sprintf字符串组合问题

[复制链接]

1

主题

6

回帖

9

积分

新手上路

积分
9
发表于 2022-10-28 21:58:14 | 显示全部楼层 |阅读模式
image.png 请教个问题,我在for循环里将接收到的CAN报文组合到databuff里,然后再和接收到的时间、ID通过sprintf组合 ,但是最后组合出来的字符串不知道为什么会把时间和ID再重复一遍
image.png
这是发送出来的数据
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2022-10-29 00:55:56 | 显示全部楼层
初步来看,buf1的缓存小了,加大下,至少要等于buf + databufff之和。
防止有效展示字符超过64字节了。
回复

使用道具 举报

85

主题

781

回帖

1036

积分

至尊会员

积分
1036
发表于 2022-10-29 12:43:51 | 显示全部楼层
长度参数不对,使用strlen替换sizeof或者使用sprintf返回值作为长度试试
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2022-10-29 14:19:19 | 显示全部楼层
eric2013 发表于 2022-10-29 00:55
初步来看,buf1的缓存小了,加大下,至少要等于buf + databufff之和。
防止有效展示字符超过64字节了。

不行 buf1缓存不管加多大 还是一样的情况。在最后一个sprintf函数将buf和darabuff组合时就已经有问题了
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2022-10-29 14:20:11 | 显示全部楼层
庄永 发表于 2022-10-29 12:43
长度参数不对,使用strlen替换sizeof或者使用sprintf返回值作为长度试试

是在最后一个sprintf函数 将buf和databuff组合在一起的时候 buf1的数据就已经不对了
回复

使用道具 举报

22

主题

319

回帖

385

积分

高级会员

积分
385
发表于 2022-10-29 15:44:17 | 显示全部楼层
是不是pos的问题,没给初值
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2022-10-29 16:26:27 | 显示全部楼层
tovinz 发表于 2022-10-29 15:44
是不是pos的问题,没给初值

有道理
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2022-10-29 16:27:04 | 显示全部楼层
zhou0411 发表于 2022-10-29 14:19
不行 buf1缓存不管加多大 还是一样的情况。在最后一个sprintf函数将buf和darabuff组合时就已经有问题了

看下是不是楼上群友说的问题,还有就是栈空间大小够吧
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2022-10-29 19:11:29 | 显示全部楼层
是栈空间大小不够 问题已经解决了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-26 05:59 , Processed in 0.272312 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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