一次输入如何获得多个值?(不确定性的数量)

Kai*_*ori 5 c scanf

如何从键盘输入多个值(整数类型和许多不确定性)?

我需要编写一个允许用户输入任意数字的程序,每个数字都由Space分隔,当用户按下Enter时,该数字被放入每个变量Array中.

例如,

输入数字:1 2 8 9(回车)如果输入第四个(数字),它将建立四个变量来获得该值.

number [0] = 1,number [1] = 2,number [2] = 8,number [3] = 9.

输入数字:3 4 7(回车)如果输入第三个(数字),则必须建立三个变量才能得到该值.

number [0] = 3,number [1] = 4,number [2] = 7.

我试图使用扫描f功能,但它不起作用,

如果有任何好的建议,请告诉我

#include <stdio.h>
#include <windows.h>

int n, number[10];

main()
{
    printf("Enter Number of integer : ");
    scanf("%d", &n);
    if (n == 1) {
        printf("Enter integer : ");
        scanf("%d", &number[0]);
    } else if (n == 2) {
        printf("Enter integer : ");
        scanf("%d %d", &number[0], &number[1]);
    } else if (n == 3) {
        printf("Enter integer : ");
        scanf("%d %d %d", &number[0], &number[1], &number[2]);
    }
    system("pause");
}
Run Code Online (Sandbox Code Playgroud)

ryy*_*ker 2

scanf()您是否考虑过使用,fgets()和的组合来做到这一点strtok()

例如,您可以使用scanf()来简单查询预期的输入数量。然后使用 strtok() 周围的循环来标记用户的输入:

int main()
{
    char line[1024];
    char *token = {0};
    char delim[]={" \r\n\t"};
    long telPos = 0;
    int count, i;
    int *array = {0};

    printf("Enter Number of integers, <return> then line of integers : \n");
    scanf("%d",&count);

    getchar();//eat the newline (from <return>)

    while (fgets(line, 1024, stdin) != NULL)
    {
        array = malloc(sizeof(int)*count);
        token = strtok(line, delim);
        i = -1;
        while(token)
        {
            if((count - 1) > i++)
            {
                array[i] = atoi(token);
                token = strtok(NULL, delim);
            }
            else
            {
                for(i=0;i<count;i++) printf("value %d: %d\n", i, array[i]);
            }
        }
        //do something here with array, then free it.
        free(array);
    }

    return 0;

}
Run Code Online (Sandbox Code Playgroud)