猿问

请问while(。。!=EOF) 这个语句是什么意思呢?是不是可以终止这个循环的?

#include<stdio.h>
#include<math.h>
void main()
{double X1,X2,Y1,Y2;
double d;
while(scanf("%lf%lf%lf%lf",&X1,&Y1,&X2,&Y2)!=EOF)
{d=sqrt((double)((X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2)));
printf("%.2lf\n",d);
}
}

杨魅力
浏览 382回答 2
2回答

湖上湖

EOF 其实是一个宏,在预编译期间会被编译器用 -1 代替也就是说,当scanf 的返回值是 -1 时就会跳出循环。scanf 的返回值是前 N 个成功度取得数据的数量,简单点说就是成功读了多少个数据,不过有区别,如果你第一个输入数据非法的话,就算你后面是合法输入,也会返回 0 。EOF 是 end of file 的意思,也就是文件尾。如果是读文件的话,读到文件尾就会结束循环。如果使用键盘输入的话, 输入 Ctrl + z 就可以结束循环(貌似是模拟文件结束符还是什么的,我也不太清楚),不过我所说的是在windows 环境下,如果是其他操作系统就另当别论了。

呼啦一阵风

没错,如果输入出错,或结束,while就会停止 EOF=0
随时随地看视频慕课网APP
我要回答