具有C中的数组索引的scanf

时间:2017-08-31 01:35:19

标签: c arrays scanf

我想知道为什么当我将此函数用于具有无限循环的数组索引时,scanf想要获得比'num'更多的数字。

  

5 //数组索引的编号。

     

1 2 3 4 5 //我输了5个数字,因为我将索引号设置为5.但是..

     

6 //我必须输入另一个数字才能完成scanf的工作。

     

1 2 3 4 5 //数组中的数字。 6已经消失了。

这是我要测试的代码。

#include <stdio.h>

int main()
{
    int num = 0;
    int n[100000] = { 0 };

    while (1) {
        scanf("%d ", &num);     

        if (num > 100000 || num <= 0) {
            printf("Input a number again. \n");
        }

        else {
            for (int i = 0; i < num; i++) {
                scanf("%d ", &n[i]);
            }

            // Test
            for (int k = 0; k < num; k++) {
                printf("%d ", n[k]);
            }

            break;
        }
    }

    return 0;
}

2 个答案:

答案 0 :(得分:1)

我不确定,但我认为问题是由于您在scanf函数中的%d之后添加了额外的空格字符。尝试删除该空格字符并查看输出。

答案 1 :(得分:1)

问题在于您的scanf,在%d之后删除了额外的空格,它会正常运行。有关详细信息,请查看此link