如何在C中的一行中获得多个输入?

时间:2014-05-07 19:06:56

标签: c input

我知道我可以使用

scanf("%d %d %d",&a,&b,&c): 

但是如果用户首先确定该行中有多少输入呢?

2 个答案:

答案 0 :(得分:3)

您正在读取输入的数量,然后重复(在循环中)读取每个输入,例如:

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

int main(int ac, char **av)
{
        int numInputs;
        int *input;

        printf("Total number of inputs: ");
        scanf("%d", &numInputs);

        input = malloc(numInputs * sizeof(int));

        for (int i=0; i < numInputs; i++)
        {
                printf("Input #%d: ", i+1);
                scanf("%d", &input[i]);
        }

        // Do Stuff, for example print them:
        for (int i=0; i < numInputs; i++)
        {
                printf("Input #%d = %d\n", i+1, input[i]);
        }

        free(input);
}

答案 1 :(得分:0)

读入整行,然后使用循环来解析你需要的东西。

为了帮助您入门:

1)以下是getline(3)的手册页: http://man7.org/linux/man-pages/man3/getline.3.html

2)getline的一些替代方案: How to read a line from the console in C?

3)考虑压缩空格: How do I replace multiple spaces with a single space?

4)使用循环进行解析。您可以考虑标记: Tokenizing strings in C

5)小心并记住您的用户可以输入任何内容。