scanf с переменными аргументами (C lang) - PullRequest
0 голосов
/ 22 сентября 2019

Мои данные указаны ниже.

3 8 9 3
4 2 4 0 3
5 1 5 9 3 1
0
1 5

Как видите, первое число в каждой строке означает количество входов, оставшихся в строке.

Как я могуполучить весь ввод через scanf?Или, пожалуйста, дайте мне знать что-то новое.

1 Ответ

0 голосов
/ 22 сентября 2019

Как уже упоминалось в комментариях, проблема с scanf() заключается (помимо прочего) в том, как он обрабатывает символ перевода строки.Однако функция sscanf() (чтение из строки) не имеет этой проблемы!Таким образом, в зависимости от того, чего именно вы пытаетесь достичь, может быть что-то вроде следующего кода поможет:

#include <stdio.h>

int main()
{
    int a[5], n = 0, given;
    char buffer[200];
    while (n >= 0) {
        printf("\nEnter n and a list of numbers: ");
        fgets(buffer, 200, stdin);
        printf("Input was: %s", buffer);
        n = -1;
        given = sscanf(buffer, "%d %d %d %d %d %d", &n, &a[0], &a[1], &a[2], &a[3], &a[4]);
        if ((given < 1) || (given != n + 1)) printf("Invalid input!\n");
    }
    return 0;
}

Я не говорю, что это идеальное решение, или даже то, что вы могли бы его использовать, ноэто может дать вам некоторые подсказки относительно того, куда идти дальше.

Дайте мне знать, как вы его найдете.

...