如何解析C中几乎定义的字符串



我有一个字符串要解析。这个字符串有一个几乎定义好的GPS坐标格式。我想要得到坐标

有时我有这个:

09:24:29 N 012:34:35 W, 09:22:18 N 012:33:55 W

但有时我有额外的空白空间:

09:24:29 N 012:34:35 W , 09:22:18 N 012:33:55 W

但有时我没有空格:

09:24:29 N 012:34:35 W,09:22:18 N 012:33:55 W

但有时我有小数:

09:24:29.3 N 012:34:35.2 W, 09:22:18.1 N 012:33:55.6 W

我的问题是:用C语言读取这些GPS坐标的最可靠、最便携的方法是什么?

我首先从sscanf开始,但是我有很多额外的(或不)空白和小数的问题。

我建议你先用逗号分割成多个字符串,然后使用sscanf会更简单,因为你根本不必关心前导或尾随空格。

对于小数点,如果您读取为浮点数,则可以读取"18""18.1"。但是,您可能需要注意二进制计算机上浮点数据的一些问题。

谢谢Joachim,使用浮动是个好主意。

这个应该可以工作:

sscanf( gps_string, "%d:%d:%f %c %d:%d:%f %c", ...);
sscanf( strchr(gps_string, ',')+1, "%d:%d:%f %c %d:%d:%f %c", ...);

谢谢你的帮助和想法

相关内容

  • 没有找到相关文章

最新更新