我有一个字符串要解析。这个字符串有一个几乎定义好的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", ...);
谢谢你的帮助和想法