我有一个要解析的字符串。 该字符串具有几乎定义的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
开始,但是我有很多额外(或没有)空格和小数的问题。
答案 0 :(得分:2)
我建议你先用逗号分成多个字符串,然后使用sscanf
会更简单,因为你根本不需要关心前导或尾随空格。
对于小数点,如果你读为float,它将能够读取"18"
和"18.1"
。但是,您可能需要了解一些the problems with floating point data on binary computers。
答案 1 :(得分: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", ...);
感谢您的帮助和想法!