GPS坐标转换ddmm.mmmm(度分)-> dd.dddd(度)

来源:互联网 发布:adobe cc mac 注册机 编辑:程序博客网 时间:2024/04/30 20:27
#include <stdio.h>#include <string.h>#include <stdlib.h>int ddmm2dd(const char *ddmm, char *dd){if (NULL == ddmm || NULL == dd){return -1;}int lenSrc = strlen(ddmm)+1;int lenMm = 0;int flag = 1;memcpy(dd,ddmm,lenSrc);char *pcMm;double dMm;int iMm;/* 把pcMm定位到小数点位置 */pcMm = strstr(dd,".");if (pcMm == NULL) /* 不含小数点的情况 */{pcMm = dd+strlen(dd)-2;iMm = atoi(pcMm);dMm = iMm /60.0;}else /* 含有小数点的情况 */{/* 有度 */if (pcMm - dd > 2){pcMm = pcMm - 2;}else /* 没有度,只有分 */{pcMm = dd;flag = 0;}/* 将字符串转换为浮点数 */dMm = atof(pcMm);/* 将分转换为度 */dMm /= 60.0;}/* 把转换后的浮点数转换为字符串 */sprintf(pcMm,"%lf",dMm);if ( flag ){/* 去掉小数点前面的0 */strcpy(pcMm,pcMm+1);}/* 保留小数点后6位 */pcMm = strstr(dd,".");lenMm = strlen(pcMm);if ( lenMm > (6+2)){memset(pcMm+6+2,0,lenMm-6-2);}return 1;}int main(){char ddmm[32];char dd[32];while(scanf("%s",ddmm)){if ( ddmm2dd(ddmm,dd) >=0 )printf("%s \n",dd);}return 0;}

0 0
原创粉丝点击