问题发现(vs2022环境)
大部分初学者伙伴们可能发现很多参考代码中为了判断输入是否结束都会用以下这条代码:
#include<stdio.h>
int main()
{
int x;
while (scanf("%d", &x) != EOF)
{
printf("%d\n", x);
}
}
在很多C语言的资料中都会让大家输入Ctrl+z来让scnaf函数返回EOF(-1)。但是当我们尝试之后会发现程序不会跳出循环
查找问题原因
为了查找问题的原因,我使用如下代码来观察scanf的返回值:
#include<stdio.h>
int main()
{
int x;
printf("%d", scanf("%d", &x));
}
我发现当我连续输入3次Ctrl+z时,在屏幕上才会输出-1。也就是说在vs2022中当我们输入3次Ctrl+z后搜索%d的scanf函数才会返回EOF。
这时我思考如果是两个%d呢?