我可以在scanf中放入for循环吗?

时间:2018-10-08 09:41:24

标签: c loops for-loop scanf

我想在一行中输入未知数量的输入。例如,用户可以输入: “ ans:1 2 3 4 5” scanf()会将这五个数字存储到数组中。问题在于程序不知道会有多少输入。

#include <stdio.h>
int main()
{
    int i;
    int input[4];
    scanf("ans: " for(i = 0, i < 3,i++){scanf(" %d", &input[i]);};
    return 0;
}

对不起,我是编码的新手,编写此代码的正确方法是什么?还是这不可能? 谢谢:)

2 个答案:

答案 0 :(得分:0)

您一直在问这个问题。

您可以通过将scanf放入循环中来实现期望的效果。甚至可以要求用户提供他要输入的输入数量。

#include <stdio.h>
int main()
{
    int i;
    int input[4];
    printf("Enter the number of inputs you want to give : ");
    scanf("%d", &n);
    for(i = 0; i < n;i++)
    {
     printf("Enter the input number %d : ",i);
     scanf("%d", &input[i]);
    }
    return 0;
}

答案 1 :(得分:0)

fgets()sscanf()"%n"一起使用

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

int main(void) {
    char input[100];
    int arr[10];

    //fgets(input, sizeof input, stdin);
    strcpy(input, "1 2 42 56 -3 0 2018\n"); // fgets

    char *pi = input;
    int tmp, pp, i = 0;
    while (sscanf(pi, "%d%n", &tmp, &pp) == 1) {
        if (i == 10) { fprintf(stderr, "array too small\n"); exit(EXIT_FAILURE); }
        pi += pp;
        arr[i++] = tmp;
    }
    printf("got this ==>");
    for (int k = 0; k < i; k++) printf(" %d", arr[k]);
    puts("");
}