字符串的解析与拼接(C语言实现)

简介

最近大半年在搞一个基于NB的物联网项目,里面涉及到NB模组到移动ONENET平台的接入,整个过程需要不断发送AT指令到NB,从返回信息里解析相关参数再放入到下一条指令里面,这里以onenet平台下发数据介绍下字符串的处理方法
在这里插入图片描述

如图,当平台下发数据123时,mcu收到字符串+MIPLWRITE: 0,18960,3200,0,5750,2,3,313233,0,0,按照接入协议,我需要在10s内将信息ID"18960"解析出来并放入到下一条AT指令做下发响应,即指令AT+MIPLWRITERSP=0,18960,2,

相关代码

char write_rsp[40]={0};                  //(0)
void RspAnalyseStr(char str[])           //(1)
{
   char* down_write_ID=NULL;             //(2)
   char* str1 = str;            
   char substr[15] = "+MIPLWRITE: 0,";   //(3)
   char* add1 = strstr(str1,substr);     //(4)   
   char cut[] = ",";                    //(5)以','作为分割字符
   if(add1 != NULL)                     //(6)
   {	 
	    down_write_ID=strtok(add1+14,cut); //(7)
		sprintf(write_rsp,"%s%s%s","AT+MIPLWRITERSP=0,",down_write_ID,",2");   //(8)
		printf("%s\r",write_rsp);    //(9)
   }
  
}

逐句解释
(0)定义一个字符数组用于存储数据下发回复消息
(1)函数参数代表的是将存储返回信息的数组作为参数传进来
(2)定义一个指针
(3)定义一个字符串数组,存储字符串
(4)函数strstr()判断substr是不是str1的字串,如果是则返回子串第一次出现的地址,如果不是返回NULL
(5)定义逗号为分割字符
(6)如果不等于NULL则substr是str1的子串
(7)函数strtok()用于分割从add1+14开始的字符串(将分隔符出现的位置变为\0),第一次调用返回第一个分割字符串的地址,第二次调用strtok,第一个参数放NULL,返回的是第二个分割字符串地址(以后第一个参数都写NULL)
(8)将相关字符串通过sprintf打印到缓存区write_rsp,实现字符串拼接
(9)上报回复信息

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

foreverwlh

你的鼓励将是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值