C - 将用户输入扫描到要排序的数组中

时间:2014-05-29 02:40:27

标签: c sorting integer user-input

原谅我,我是C编程新秀。我需要做的是从标准输入中获取值并将它们存储在一个数组中,该数组稍后将在线上进行排序。

用户的输入方法是一次一行一个号码(即输入一个号码,按回车键,输入号码,按回车键等)。当用户输入数字后,他们会按ENTER而不提供数字。

我接受值并存储它们的代码如下。您可能会立即看到问题,但我没有看到它。

#include <stdio.h>
#define MAX 100

int main()
{
    int n, i, array[MAX];

    printf("Enter a list of integers\n");

    for(i = 0; i <= MAX; ++i){
        printf("> ");
        if (scanf("%d", &n) == -1)
            break;
        else
            scanf("%d", &n);
            array[i] = n;
    }

    printf("The array is %d", *array);
    return 0;
}

下图是程序应该如何运行。我已经有了排序代码,它看起来效果很好。非常感谢您的帮助。

enter image description here

2 个答案:

答案 0 :(得分:2)

你有它做你想要的,你只需要一些调整。首先,输入不返回-1,为了简单起见,您需要输入ctrl+d来停止输入。在最后输入之后,只需点击ctrl+d。看看:

#include <stdio.h>
#define MAX 100

int main()
{
    int n, i, array[MAX];

    printf("Enter a list of integers [ctrl+d] to end\n");

    for(i = 0; i <= MAX; ++i){
        printf("> ");
        if (scanf("%d", &n) == -1)
            break;
        array[i] = n;
    }
    puts ("");

    int z;
    for (z = 0; z < i; z++)
        printf("The array is %d\n", array[z]);

    return 0;
}

输出:

Enter a list of integers [ctrl+d] to end
> 1
> 2
> 3
> 4
> 5
>
The array is 1
The array is 2
The array is 3
The array is 4
The array is 5

答案 1 :(得分:1)

以下是输入时退出的更新前一个答案。

#include <stdio.h>
#define MAX 100

int main()
{
    int n, i, array[MAX];
    char num[MAX];
    int res;

    printf("Enter a list of integers [ctrl+d] to end\n");

    for(i = 0; i <= MAX; ++i){
        printf("> ");
    fgets(num, sizeof(num), stdin);
    res = sscanf(num, "%d", &n);
    if(res != 1)
     break;
    n = atoi(num);
        array[i] = n;
    }
    puts ("");

    int z;
    for (z = 0; z < i; z++)
        printf("The array is %d\n", array[z]);

    return 0;
}