我使用以下C代码从用户获取输入,直到EOF发生,但问题是此代码不起作用,它在第一次输入后终止.任何人都可以告诉我这个代码有什么问题.提前致谢.
float input;
printf("Input No: ");
scanf("%f", &input);
while(!EOF)
{
printf("Output: %f", input);
printf("Input No: ");
scanf("%f", &input);
}
Run Code Online (Sandbox Code Playgroud)
CB *_*ley 42
EOF只是一个带有值的宏(通常为-1).您必须针对某些内容进行测试EOF,例如getchar()调用的结果.
测试流结束的一种方法是使用该feof功能.
if (feof(stdin))
Run Code Online (Sandbox Code Playgroud)
请注意,"流结束"状态仅在读取失败后设置.
在您的示例中,您应该检查scanf的返回值,如果这表明没有读取字段,则检查文件结束.
EOF是C中的常量.您没有检查EOF的实际文件.你需要做这样的事情
while(!feof(stdin))
Run Code Online (Sandbox Code Playgroud)
这是feof的文档.您还可以检查scanf的返回值.它返回成功转换的项目数,或者EOF它是否到达文件末尾.