سؤال

I know that I can use

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

But what if the user first determines how many input there'd be in the line?

هل كانت مفيدة؟

المحلول

You are reading the number of inputs and then repeatedly (in a loop) read each input, eg:

#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);
}

نصائح أخرى

Read in the whole line, then use a loop to parse out what you need.

To get you started:

1) Here is the manual page for getline(3): http://man7.org/linux/man-pages/man3/getline.3.html

2) Some alternatves to getline: How to read a line from the console in C?

3) Consider compressing spaces: How do I replace multiple spaces with a single space?

4) Use a loop for parsing. You might consider tokenizing: Tokenizing strings in C

5) Be careful and remember that your user could enter anything.

#include <conio.h>
#include <stdio.h>
main()
{
    int  a[100],i,n_input,inputs;
    printf("Enter the number of inputs");
    scanf("%d",&n_input);

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

    for(i=0;i<n_input;i++)
    {
        printf("\nInput #%d: %d ",i+1,a[i]);
    
    }

}    
    /*
_______________This program is in C Programming Language_______________

We have to directly enter all the elements in one line giving  spaces between them. Compiler will automatically ends the for loop I have used and assign the value to their respective variables or array indexes. Below program and output will give you better understanding. 
*/
#include <stdio.h>

int main()
{
    //taking no of inputs from user
    int len;
    printf("Enter the number of inputs you want to enter : ");
    scanf("%d", &len);
    int i;
    //defined an array for storing multiple outputs
    int arr[100];
    //included a printf statement for better understanding of end user
    printf("Enter the inputs here by giving space after each input : ");
    /*here is the important lines of codess for taking multiple inputs on one line*/
    for (i=0;i<len;i++)
    {
        scanf("%d", &arr[i]);
    }
    printf("Your entered elements is : ");
    for (i=0;i<len;i++)
    {
        printf("%d ", arr[i]);
    }
}

/*
OUTPUT :
Enter the number of inputs you want to enter : 5
5 5 5 8 7 
Your entered elements is : 5 5 5 8 7
*/
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top