有一串字符,用逗号隔开,需要以逗号为分割符分别取出并存放到结构体中
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);