C, чтение нескольких чисел из одной строки, игнорируя пробелы - PullRequest
0 голосов
/ 01 мая 2020

Я работаю над проблемой, когда мне нужно ввести строку чисел с одним или несколькими пробелами между ними и добавить числа. Но у меня проблема с игнорированием пробелов.

Я пытался использовать scanf ("") и scanf ("% *c"). Какой самый эффективный способ сделать это?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 01 мая 2020

Если число введенных целых чисел во введенной строке неизвестно, вы можете использовать подход, показанный в демонстрационной программе.

#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 голос
/ 01 мая 2020

Чтобы прочитать целые числа, используйте строку формата% 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 (что означает long float) и отрегулируйте код выше соответственно.

0 голосов
/ 01 мая 2020

Способ сделать это в C ++ будет

double a;
double b;
double c;

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

Я не уверен, что вы можете сделать что-то очень похожее в C, пожалуйста, скажите мне, было ли это полезно.

...