C、从单行中读取多个数字,忽略空白处。

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

我正在处理一个问题,我需要输入一行数字,中间有一个或多个空格,然后将数字相加。但是我遇到了一个问题,就是如何忽略这些空格。

我试过使用 scanf(" ") 和 scanf("%*c")。请问最有效的方法是什么?

谢谢。

c scanf
1个回答
2
投票

如果输入的字符串中的输入整数是未知的,那么你可以使用演示程序中所示的方法。

#include <stdio.h>
#include <stdlib.h>

int main(void) 
{
    enum { N = 100 };
    char line[N];

    while ( fgets( line, N , stdin ) != NULL && line[0] != '\n' && line[0] != '\0' )
    {
        long long int sum = 0;

        const char *s = line;
        char *p = line;

        do
        {
            s = p;
            sum += strtol( s, &p, 10 );
        } while ( s != p );

        printf( "sum = %lld\n", sum );
    }

    return 0;

}

如果要输入字符串

1 2 3 4 5

则输出为

sum = 15

1
投票

如果要读取整数,使用格式字符串%d,像这样。

#include <stdio.h>

int main(void)
{
    int sum, i, n;

    sum = 0;
    n = scanf("%d", &i);
    while (n == 1) {
        sum += i;
        n = scanf("%d", &i);
    }
    printf("%d\n", sum);
    return 0;
}

如果你想读实数,就用格式字符串%lf(代表长浮点数),并相应调整上面的代码。


-1
投票

在C++中的做法是

double a;
double b;
double c;

std::cin >> a >> b >> c;

我不知道你是否可以在C语言中做非常类似的事情,请告诉我是否有帮助。

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