c语言中EOF用法问题

EOF用法问题

#include<stdio.h>

int main(){
    int i;
    while(scanf("%d",&i)!=EOF){
        printf("%d",i);
    }
    return 0;
}

当输入1和ctrl+z时如果同行输入会陷入死循环而不是结束程序,是为什么

img

根据参考链接,在Windows下使用ctrl+z产生EOF,需要在输入的新的一行的开始,图片中在是输入1结束后按下ctrl+z,所以就导致结果出错了;

可以在输入的一行开始按下ctrl+z即可。

测试如下:

参考链接:


#include<stdio.h>
 
int main(){
    int i;
    //  printf( " %d occurs %d times\n", currVal,cnt);
    // 在新的一行开始输入ctrl+z,结束输入 
    while(scanf("%d",&i)!=EOF){
    
        printf("%d",i);
    }
    return 0;
}
 


img

while(scanf("%d",&i)!=1){
    printf("%d",i);
}