[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/60 и 1/3600 из десятичного значения, преобразованного в 1/100 и 1/10000.