循环中的scanf应该对EOF信号作出反应,但它不会

循环中的scanf应该对EOF信号作出反应,但它不会,c,C,我有一段代码,它读取数字float,在接收到EOF单个CtrlD后应该停止,但它没有反应 需要帮忙吗 (我知道它看起来很奇怪,但是-1控件的存在是有原因的。) EOF是scanf()的返回值,而不是写入传递的内存地址的值 do { f++; } while(scanf("%f", &paid[f]) != EOF && paid[f - 1] != 0); 测试scanf的返回值,该值应为1(转换的项目数)EOF不是一个会在数组中出现的值float paid[]

我有一段代码,它读取数字
float
,在接收到
EOF
单个CtrlD后应该停止,但它没有反应

需要帮忙吗

(我知道它看起来很奇怪,但是
-1
控件的存在是有原因的。)


EOF
scanf()
的返回值,而不是写入传递的内存地址的值

do {
    f++;
} while(scanf("%f", &paid[f]) != EOF && paid[f - 1] != 0);

测试
scanf
的返回值,该值应为
1
(转换的项目数)
EOF
不是一个会在数组中出现的值
float paid[]
@WeatherVane感谢您的快速反应。它的反应就像第四次按下…请张贴显示您尝试过的内容,以及实际输入、输出和预期输出,显示问题所在。否则,我们可以整天问问题,例如“您是否
#是否包含
”需要检查调用
scanf()
返回的值,而不是参数值。
do {
    f++;
} while(scanf("%f", &paid[f]) != EOF && paid[f - 1] != 0);