yklstudent-1794 发表于 2019-11-21 16:47:02

为什么不用cJSON呢

yangc9 发表于 2019-11-21 16:52:36

你需要sscanf

whtt 发表于 2019-11-22 10:41:01

sprintf()执行效率是真的低

stm1024 发表于 2019-11-23 09:45:20

sos博 发表于 2019-11-21 12:13
好像很好。是我想要的。像python和java等里面都有个split函数,很简单就能拆分了字符串。感谢。 ...

Split函数我当然知道,C#里面也有,指定一个分隔符,就可以自动分割并反馈一个字符串数组,问题是C没有对等的函数,除非你自己实现。

sos博 发表于 2019-11-24 18:01:14

yklstudent-1794 发表于 2019-11-21 16:47
为什么不用cJSON呢

不是不用是不知道啊,你说这个cjson是啥?别告诉我要改原数据,原数据是必须那个格式,不给我商量余地。
话说告stm32的都是什么思维呢?说个问题,一般不给你解答,然后说你把问题修改一下就好了。

radio2radio 发表于 2019-11-24 20:48:41

sos博 发表于 2019-11-24 18:01
不是不用是不知道啊,你说这个cjson是啥?别告诉我要改原数据,原数据是必须那个格式,不给我商量余地。
...

你这个也不是很难,不过我也没有做过,不能给你完整的方法。

首先,判断是否收到“命令名",没有问题吧。
接下来,调用一个提取数据的子程序:

    1. 取一个字符,如果是引号(")则返回进入结束的字符串处理。
    2. 如果字符为0x30-0x39,则放入temp【0】,否则返回出错。
    3. 取第二个字符,为0x30-0x39,则放入temp【1】;如果为0x20,就返回temp【0】-0x30;否则返回出错。
    4. 取第三个字符,为0x30-0x39,则放入temp【2】;如果为0x20,就返回(temp【0】-0x30)*10 + (temp【1】-0x30);否则返回出错。
    5. 取第四个字符,如果为0x20,就返回(temp【0】-0x30)*100 + (temp【1】-0x30)*10 +(temp【2】-0x30);否则返回出错。

正常的返回值,放入idx。重复上面的就得到idx+1.

结束的字符串处理,笨办法就是逐个拷贝两个引号之间的字符到string,结束后再放一个字符串结束符。


aiherong 发表于 2019-11-25 04:08:23

简单一点: 从右往左交替使用strstr()和strright(),以空格为界定,嵌套筛选

yklstudent-1794 发表于 2019-12-9 21:10:27

sos博 发表于 2019-11-24 18:01
不是不用是不知道啊,你说这个cjson是啥?别告诉我要改原数据,原数据是必须那个格式,不给我商量余地。
...

为什么自己就不会主动去了解cjson?
cjson就是
发送方:把数据打包字符串然后发送出去
接收放:接收字符串,把字符串转换为数据;
页: 1 [2]
查看完整版本: 提取出如下字符串,应该用什么函数呢?HAL的库