【发布时间】:2020-04-22 20:49:40
【问题描述】:
我正在解析 char 数组中的 GPS 位置,如图所示:
+CGNSINF: 1,1,20200103230006.000,36.100094,-95.925093,190.100,0.00,113.3,1,,1.1,1.4,0.9,,10,6,,,32,,
我想得到经纬度,所以我使用memcpy函数从数组中复制如下:
char latitude[8];
char longitude_1[8];
char s1[] = "+CGNSINF: 1,1,20200103230006.000,36.100094,-95.925093,190.100,0.00,113.3,1,,1.1,1.4,0.9,,10,6,,,32,,";
char* position;
position = strstr(s1,".000");
memcpy(longitude, position+5, 9);
memcpy(latitude, position+15,10);
printf("long: %s\r\n",longitude);
printf("lat: %s\r\n",latitude);
输出:
long: 36.10009-95.925093
lat: -95.925093
所以输出显示纬度正好 10 个字节,但是经度太奇怪了,它需要一些纬度!,有什么解决方案吗?使用 memcpy 以外的其他功能。
【问题讨论】:
-
这是 100% C 代码。没有 C++。如果您使用现代 C++ 语言元素,则不会出现越界问题。也许您想将标记从 C++ 更正为 C。