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

来源:互联网 发布:php调用dubbo服务 编辑:程序博客网 时间:2024/05/16 08:32

标签: c
 832人阅读 评论(0) 收藏 举报
 分类:
#include <stdio.h>#include <string.h>#include <stdlib.h>int <span style="color: black; background-color: rgb(160, 255, 255);">ddmm</span>2dd(const char *<span style="color: black; background-color: rgb(160, 255, 255);">ddmm</span>, char *dd){if (NULL == <span style="color: black; background-color: rgb(160, 255, 255);">ddmm</span> || NULL == dd){return -1;}int lenSrc = strlen(<span style="color: black; background-color: rgb(160, 255, 255);">ddmm</span>)+1;int lenMm = 0;int flag = 1;memcpy(dd,<span style="color: black; background-color: rgb(160, 255, 255);">ddmm</span>,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 <span style="color: black; background-color: rgb(160, 255, 255);">ddmm</span>[32];char dd[32];while(scanf("%s",<span style="color: black; background-color: rgb(160, 255, 255);">ddmm</span>)){if ( <span style="color: black; background-color: rgb(160, 255, 255);">ddmm</span>2dd(<span style="color: black; background-color: rgb(160, 255, 255);">ddmm</span>,dd) >=0 )printf("%s \n",dd);}return 0;}

0 0