如何在 C 中解析几乎定义的字符串?
How to parse almost-defined string in 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
会更简单,因为你根本不必关心前导或尾随 space.
至于小数点,如果你读成浮点数,那么"18"
和"18.1"
都可以读。但是,您可能需要了解一些 the problems with floating point data on binary computers.
谢谢 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", ...);
感谢您的帮助和想法!
我有一个字符串要解析。 该字符串具有几乎已定义的格式和 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
会更简单,因为你根本不必关心前导或尾随 space.
至于小数点,如果你读成浮点数,那么"18"
和"18.1"
都可以读。但是,您可能需要了解一些 the problems with floating point data on binary computers.
谢谢 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", ...);
感谢您的帮助和想法!