初级会员

- 积分
- 143
- 金钱
- 143
- 注册时间
- 2018-4-9
- 在线时间
- 25 小时
|
1金钱
#include <stdio.h>
#include <stdlib.h>
//#include <conio.h>
//#include <locale.h>
#include <string.h>
double num,num_3,num_4;
int num_1,num_2;
char buf_GPS[100];
char *latitude;
char *longitude;
//数据处理函数
char* change_GPS(char *str)
{
num = atof(str);
printf("The string 'str' is %s and the number 'num' is %f. \n",str, num);
num_1 = ((int)num)/100;
num_2 = ((int)num)%100;
num_3 = (num - (double) (num_1 * 100 + num_2) ) * 60 ;
num_4 = (double)num_1 + ((double)num_2)/60 + num_3/3600; //转换成十进制双精度浮点型经纬度
sprintf(buf_GPS,"%f",num_4); //转换成字符串
printf("string=%s\n",buf_GPS);
return buf_GPS;
}
int main(void)
{
char la[20] = "2518.9290";
char lo[20] = "11024.8415";
latitude=change_GPS(la);
longitude=change_GPS(lo);
printf("jieguo=%s\n",latitude);
printf("jieguo=%s\n",longitude);
}
为什么这样写打印出来的latitude和longitude的值都是longitude的值,执行 longitude=change_GPS(lo);把 latitude的值都覆盖了,为什么?哪个大佬教一下
|
最佳答案
查看完整内容[请看2#楼]
不好意思,确实我弄错了。
因为是这样的:由于经度纬度的结果都保存在全局buf_GPS[100]数组中,后面经度的计算结果就覆盖掉了前面维度的计算结果。
把主函数中:
latitude=change_GPS(la);
longitude=change_GPS(lo);
printf("jieguo=%s\n",latitude);
printf("jieguo=%s\n",longitude);
改成:
latitude=change_GPS(la);
printf("jieguo=%s\n",latitude);
longitude=change_GP ...
|