从用户获取输入并将其存储在数组中

时间:2014-10-07 20:47:06

标签: c arrays input

我真的很陌生,所以如果有人能告诉我如何做到这一点会很棒: 我正在尝试使用fgets获取用户输入。因此,如果用户输入以下整数: 1 2 3 4 5

我如何扫描它们并将它们放入一个int = [1,2,3,4,5]

的数组中

这就是我现在要做的事情:我不断循环并要求用户输入一个数字直到用户没有放任何东西。在每次迭代中,我将用户的输入保存到数组

int myArray[200];
char input_str[1024];

fprintf(stdout, "Enter numbers: ");

if (fgets(input_str, sizeof(input_str), stdin) == 0){
    fprintf(stderr, "Error returned from fgets()...\n");
    exit(1);
}

sscanf(input_str, "%d", &n);
myArray[i]=n;

//The while loop will continue as long as the string is not null
while( input_str[0]!='\0'){

    if (fgets(input_str, sizeof(input_str), stdin) == 0){
        break;
    }
    for (i=1;i<201;i++){
        sscanf(input_str, "%d", &n);
        myArray[i]=n;
    }
}

1 个答案:

答案 0 :(得分:1)

#include <stdio.h>

int main(void){
    int myArray[200];
    char input_str[1024];
    int i, n = 0;
    size_t full = sizeof(myArray)/sizeof(*myArray);

    fprintf(stdout, "Enter numbers: ");

    while(fgets(input_str, sizeof(input_str), stdin) != NULL){
        char *p = input_str;
        int v, len;

        if(*input_str == '\n' || n == full)
            break;//input end if blank line

        while(1==sscanf(p, "%d%n", &v, &len)){
            myArray[n++] = v;
            p += len;
            if(n == full)
                break;
        }
    }
    //check print
    for (i=0;i<n;i++)
        printf("%d ", myArray[i]);
    return 0;
}