qt中如何将串口接到的字符串中数据分割_STM32解析GPS定位数据算法

一、函数功能

C 库函数 char *strtok(char *str, const char *delim) 分解字符串 str 为一组字符串,delim 为分隔符。

二、函数解析

1.函数原型

char *strtok(char *str, const char *delim)

2.参数

char *str 要被分割的目标字符串

char *delim 要分割目标字符串的分隔符,必须被包含于目标字符串中

3.返回值

函数返回被分解的第一个子字符串,如果没有可检索的字符串(分隔符),则返回一个空指针。

三、实例

用C库字符串处理函数,解析GSM模块通过串口回传的字符串年、月、日、时、分、秒、经度、纬度,并通过库函数将字符串转换为int、double的数据类型。

a44abb1277b99796b70e4683d5935dff.png

四、注意事项

数据缓冲区的指针必须绑定可用的左值(内存单元)

比如在上述实列中,用到了库函数 char *strncpy(char *dest, const char *src, size_t n),其中的参数char * dest ,传入的实参必须绑定一个已经定义好的左值(内存单元),因为此函数是将src中的前面n个字节保存到dest中,所以dest不能是一个空指针。

看到这里有兄弟可能会问,那你定义char *pp 的时候为啥就没有初始化绑定一个可用的左值(内存单元)。

那是因为char *strtok(char *str, const char *delim) 这个函数执行完成后,返回的是str中分隔符前面的左值(内存单元),而我们传入的str参数肯定是一个具体的地址,所以通过pp=strtok(NULL,",");其实是将pp绑定、指向函数返回的左值(内存单元)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值