我正在努力解决这个问题,我需要你的帮助。
我有这段代码......
while(a != EOF){
scanf("%f",&a);
...
}
...我想通过按CTRL + D来终止此循环。它有效,但我需要按两次。我试着用这个
while(getchar() != EOF){
scanf("%f",&a);
...
}
但结果相同。有没有办法通过按CTRL + D一次结束这个循环? 感谢您的回复。
答案 0 :(得分:2)
答案 1 :(得分:1)
您应该检查调用scanf
的结果,不仅仅是针对EOF,还要确保正确解析值。 scanf
返回已成功扫描的项目数,在您的特定情况下,如果成功扫描一个浮点数,它将返回1。如果解析不成功,那么在此之后你就不能依赖a
的值。
int result;
do
{
while ((result = scanf("%f", &a)) != EOF)
if (result == 1)
{
// scan was successful, you can safely use the value of "a"
}
else
{
// scan was unsuccessful
// you can skip to the next line, produce an error, etc.
}
}
答案 2 :(得分:0)
尝试测试scanf()
的回报:如果您的信息流已结束,则会返回EOF
。
答案 3 :(得分:0)
您至少有两个解决方案:
予。
while (scanf("%f",&a) != EOF) {
...
}
II。
从File Descriptor
获得一个
答案 4 :(得分:0)
试试这个,这对你有帮助:
while(1) {
scanf("%f",&a);
if(a==EOF)
break;
......
}