mculjf 发表于 2022-9-21 09:49:41

sprintf出现小数点变成字符,如2.77变成2F77,有解决办法吗?

sprintf(dis_buffer,"%.2f",(float)PM6010_Measure_Dta.Comm_Info.Absorption_ratio/100);这个格式里的小数点会被字母代替的,比如说2.77最后会转换成2F77。有解决办法吗?目前可以确认是sprintf造成的,还有个关键问题是必须运行一段时间才能出现,但也有可能不出现,测试三台仪表,2台有这个问题

gonboy 发表于 2022-9-21 11:02:12

貌似,是你的程序数据异常(如栈溢出等造成的)。 与printf无关。

mculjf 发表于 2022-9-21 11:13:09

chardis_buffer; Absorption_ratio这个值不会超过300,不会溢出吧

jiki911 发表于 2022-9-21 11:27:42

堆栈溢出,2楼说得没错

mculjf 发表于 2022-9-21 11:28:58

哪里最有可能会溢出?

Doding 发表于 2022-9-21 11:42:01

mculjf 发表于 2022-9-21 11:28
哪里最有可能会溢出?
(引用自5楼)

你程序里别的地方栈溢出,把这个缓存改写了。

mculjf 发表于 2022-9-21 16:06:10

自查了一遍,没发现有栈溢出的情况,所有的数据都有上限控制

zhucezhuanyong 发表于 2022-9-21 17:16:34

楼上几位的意思是你数组之类的操作过界了,误修改了小数点这个存储位置的内容,不是说你的变量值溢出
页: [1]
查看完整版本: sprintf出现小数点变成字符,如2.77变成2F77,有解决办法吗?