sprintf()函数可能发生的错误

接收到如下数据:

GET http://app.tdvpn.com/heartbeat?mac=898607B81017AT+CIPSTATUS?
&status=00/ HTTP/1.1
Host:localhost

按理:AT+CIPSTATUS?不应该出现在上述字符串中,字符串产生语句:

    sprintf(jsonbuf,"%s/heartbeat?mac=%s&status=%02d",urlHead,MACADDR,status);
    sprintf(httppost,"GET %s/ HTTP/1.1\r\nHost:localhost\r\n\r\n",jsonbuf);

上述错误产生的原因:MACADDR对应的内存地址为0x2000007C,“AT+CIPSTATUS? ”来自USART2_TX_BUF[] 数组,数组对应的内存地址为:0x20000088,与MACADDR的地址时连续的,这就导致sprintf()函数在读取MACADDR的值时把USART2_TX_BUF的值也读了;

解决办法:MACADDR数组末尾填0 或者\r\n  这样 sprintf()读到0时则停止读取(%s的时候)

 

posted on 2018-02-09 13:45  马勇123  阅读(402)  评论(0编辑  收藏  举报

导航