去除字符串首位字符,并按符号分隔

有一串字符,用逗号隔开,需要以逗号为分割符分别取出并存放到结构体中

Q,344,111.11,096,000.59,1018.5,037,+023.0,+0007.8,00000.0,000.0,+50.762988:-001.539893:-0.80,2014-05024T06:21:01.0,_3c

char *buf = 'Q,344,111.11,096,000.59,1018.5,037,+023.0,+0007.8,00000.0,000.0,+50.762988:-001.539893:-0.80,2014-05024T06:21:01.0,_3c';

//strrchr函数,返回逗号在buf中最后出现的地址
char *c = strrchr(buf, ',');

//将最后一个逗号出现的位置赋值为结束符,去掉尾部
*c = '\0';

//strchr函数,返回逗号在buf中第一次出现的地址(包括了逗号)
c = strchr(buf, ',');

//指针后移一格,去尾
c++;

char gps[100];
//使用sscanf函数格式化赋值
//gmx_data是定义的数据结构体,数据都是float型
//将gps数据之前的浮点数按逗号分隔
sscanf(c, "%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%s", &gmx_data->GMX_RWD,&gmx_data->GMX_RWS,\
            &gmx_data->GMX_CD,&gmx_data->GMX_CS,&gmx_data->GMX_BAR,&gmx_data->GMX_RH,&gmx_data->GMX_T,\
            &gmx_data->GMX_D,&gmx_data->GMX_RT,&gmx_data->GMX_RI,gps);

//取gps数据
sscanf(gps, "%f:%f:%*s",&gmx_data->GMX_GLA, &gmx_data->GMX_GLO);
//至此,数据就成功取出了!

问题

刚开始想不去首位,直接一次性格式化,但总是转换失败,不知道为什么,代码如下:

sscanf(c, "%*s,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f:%f:%*s", &gmx_data->GMX_RWD,&gmx_data->GMX_RWS,\
            &gmx_data->GMX_CD,&gmx_data->GMX_CS,&gmx_data->GMX_BAR,&gmx_data->GMX_RH,&gmx_data->GMX_T,\
            &gmx_data->GMX_D,&gmx_data->GMX_RT,&gmx_data->GMX_RI,&gmx_data->GMX_GLA, &gmx_data->GMX_GLO);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值