带有字符串的Scanf()函数

问题描述 投票:-1回答:1

我有以下要从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"

我不确定如何扫描这些值。您能告诉我每个变量如何显示给定值吗?

c scanf
1个回答
0
投票
[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。

© www.soinside.com 2019 - 2024. All rights reserved.