我试图用从用户那里得到的数字填充我的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]);

最佳答案

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

关于c - 如何正确使用scanf和EOF?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47564241/

10-09 15:51