EOF不是文件结尾会结束吗,这个为什么输出不了

#include<stdio.h>
int main()
{
    int a[100];
    int x,i=0,j;
    while(scanf("%d",&x)!=EOF)
    {
        a[i]=x;
        i++;
    }
    printf("%d",i);
}

这个为什么输出不了

经过测试,可以正常输出。
题主可能没有用Ctrl+Z+enter结束输入操作,输入好之后用Ctrl+Z+enter结束就能正常输出了。

img

希望对题主有所帮助!可以的话,帮忙点个采纳!

scanf在读取错误或文件结尾的时候会返回EOF(参考:https://www.runoob.com/cprogramming/c-function-scanf.html
所以在命令行可以在输入几个数字后,在通过按CTRL+Z再回车终止这个他的执行,从而返回EOF结束whiel循环,然后就会打印出结果。
在命令行也可以通过 程序名 <1.txt 类似形式传入文件让程序执行,到了文件结尾也会产生一个EOF,从而结束while循环,也一样可以打印出结果。

你需要按组合CTRL+Z键结束输入

Windows系统终端下按Ctrl+Z再回车,表示输入流结束
Linux系统终端下按Ctrl+D表示输入流结束