我有以下要从scanf函数读取的字符串
1041657W 324944N河边
如果我调用scanf():
uint32_t N = 0;
char Ch = 'z';
char Name[100];
scanf("%d %c %s", &N, &Ch, Name);
变量的值如下
N = 1041657
Ch = 'W'
Name = "324944N"
我不确定如何扫描这些值。您能告诉我每个变量如何显示给定值吗?
[wally@localhost tmp]$ cat lat.c
#include <stdio.h>
int main (void)
{
char name [500], dir1, dir2;
int lng, lat, sts;
sts = sscanf ("1041657W 324944N Riverside", "%d%c %d%c %s",
&lng, &dir1, &lat, &dir2, name);
printf ("status %d, %d%c %d%c %s\n", sts, lng, dir1, lat, dir2, name);
return 0;
}
[wally@localhost tmp]$ gcc lat.c -o lat
[wally@localhost tmp]$ ./lat
status 5, 1041657W 324944N Riverside
scanf()返回已处理的格式化参数的数量,因此五个表示已处理所有格式化参数。
请注意,对于大多数地理计算而言,DMS(度分秒)并不是特别方便。要转换为十进制度,分钟和秒将从1/100和1/10000转换后的十进制值转换为1/60和1/3600。