我的输入如下。

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


如您所见,每行的第一个数字表示该行中剩余多少输入。

如何通过scanf获取所有输入?
或者,请让我知道新的消息。

最佳答案

如注释中所述,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;
}


我并不是说这是一个理想的解决方案,甚至不是您可以使用它,但是它可能会为您提供下一步的线索。

让我知道您如何找到它。

关于c - 具有可变参数的scanf(C lang),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58048658/

10-11 17:58