sprintf函数出错

今天调试单片机的时候,使用sprintf函数来拼接字符串,其中有一个变量是从4G模组获取的modbus 数据,结果打印出来的数据一直不对
	sprintf((char *)send_buf2 , "&@#%$%.*s",(send_len),send_buf);				
	UGPRS_SEND(send_buf2,(send_len+5));
	找了半天问题,定位在这个地方,器件我一直怀疑是我的内存炸了,读不到内存,尝试用指针,并且加大内存空间,可是都没什么用,知道后来,发送另外一条指令得到了正确的回复,排除了内存的问题,又在网上查找sprintf函数,发现sprintf函数会把 00 00 当做结束符,最后不得已,更新了思路,使用内存拷贝来处理
				memset(send_buf2 , 0 ,strlen((char *)send_buf2));
				memcpy(send_buf2, heard , 5);
				memcpy(&send_buf2[5], send_buf,send_len);
				UGPRS_SEND(send_buf2,send_len+5);

这样子最终输出了正确的指令,大功告成,写个博客记录一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值