EOF用法问题
#include<stdio.h>
int main(){
int i;
while(scanf("%d",&i)!=EOF){
printf("%d",i);
}
return 0;
}
当输入1和ctrl+z时如果同行输入会陷入死循环而不是结束程序,是为什么

EOF用法问题
#include<stdio.h>
int main(){
int i;
while(scanf("%d",&i)!=EOF){
printf("%d",i);
}
return 0;
}
当输入1和ctrl+z时如果同行输入会陷入死循环而不是结束程序,是为什么

根据参考链接,在Windows下使用ctrl+z产生EOF,需要在输入的新的一行的开始,图片中在是输入1结束后按下ctrl+z,所以就导致结果出错了;
可以在输入的一行开始按下ctrl+z即可。
测试如下:
参考链接:
详解输入输出流结束标志ctrl+z和EOF_c++输入流结束标志_Junieson的博客-CSDN博客
结论windows下的ctrl+z用来作为结束输入输出流的标值,控制台读入字符^Z,只有另起一行放在行首才会起作用,否则表示结束本行,这对于java和C++都适用,注意一点,这里的结束输入输出不代表close()方法。先来看一段代码#include #include#includeint ..._c++输入流结束标志
https://blog.csdn.net/i6223671/article/details/89041492
#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;
}
