visual studio的scanf为什么返回EOF错误,或者读入不了EOF

问题遇到的现象和发生背景

先看下面这段代码,很简单的C语言代码,其中while(scanf("%d",&n) != EOF)在VS里面运行起来就是不行,不知道为什么?输入了三遍ctrl+z才结束了循环,然后我看我朋友用codeblocks输入Z^(ctrl+z)就结束了循环,属于正常的。
会不会是Visual Studio编译器的问题?有没有好人帮忙看一下

代码:
#define _CRT_SECURE_NO_WARNINGS
#include
int main()
{
    int n;
    while (scanf("%d", &n) != EOF)
    {
        printf("%d", n);
    }
    return 0;
}
运行结果及报错内容

img

img

单步调试的结果是这样:

img



)

我的解答思路和尝试过的方法

不知道是不是编译器本身的问题?也或者是VS的某处设置,但是我的VS在其他方面运行起来一直没有问题。

我想要达到的结果

哪位好人能解答一下吗?我的VS编译器scanf怎么就不能够正常读入EOF,又为什么输入了三次之后成功读入了EOF

是Visual Studio编译器的问题,你的理解完全正确,VS编译器scanf不正常读入EOF,需连续输入三次才会成功,目前没有找到解决这个bug的办法。