如何正确使用scanf和EOF?

时间:2017-11-30 00:52:45

标签: c scanf eof

我正在尝试用我从用户那里获得的数字填充我的int数组。

但是当我尝试printf一个比那个更大的特定索引时,它会显示错误的数字。

for(B_index=0,checker=0; B_index<SIZE&&!checker; B_index++)
    {

        checker=scanf("%d",&B[B_index]);

        if(checker==EOF)
        {
            checker=1;
        }

        else if(checker<1)
        {
            printf("error");
            return 1;
        }

    }
    printf("%d",B[1]); 

1 个答案:

答案 0 :(得分:1)

scanf返回分配的数量,因此如果您在控制台上输入了有效的整数,则scanf将返回1,这意味着它为B [0]分配了一个整数(由于%d)。这会导致检查器为1,因此在输入第一个数字后会立即中断循环。 B [1]未分配,因此如果清除了数组,则包含垃圾或0。