【发布时间】:2016-05-15 16:04:54
【问题描述】:
我有一个如下所示的 gps 字符串:
char gps_string[] = "$GPRMC,080117.000,A,4055.1708,N,02918.9336,E,0.00,316.26,00,,,A*78";
我想解析逗号之间的子字符串,如下所示:
$GPRMC
080117.000
A
4055.1708
.
.
.
我已经尝试过如下的 sscanf 函数:
sscanf(gps_string,"%s,%s,%s,%s,%s,",char1,char2,char3,char4,char5);
但这不起作用。如果使用上述函数,char1 数组将获取整个字符串。
实际上,我在之前的算法中使用了 strchr 函数并让它工作,但如果我可以让它与 sscanf 一起工作并在子字符串中获取这些参数,它会更容易和更简单。
顺便说一句,逗号之间的子字符串可能会有所不同。但是逗号顺序是固定的。例如下面是另一个 gps 字符串示例,但由于卫星问题,它不包含它的某些部分:
char gps_string[] = "$GPRMC,001041.799,V,,,,,0.00,0.00,060180,,,N*"
【问题讨论】:
-
使用
strtok()分割字符串 -
以上两个cmets是很好的解决方案但是
strstr不是。 -
@abdullahcinar:您需要阅读有关 scanf 函数的文档。但是
[^,]匹配每个不是逗号的字符。 -
另一种方法是使用
strpbrk()查找下一个','。如果这样做,您将编写循环以获取子字符串并更新指针以查找下一个逗号。其他线程上的一些 cmets 提到了这一点,以避免strtok()的一些问题
标签: c arrays string parsing substring