fscanf里面没有工作

Raf*_*ias 1 c loops scanf do-while

所以,我在使用do-while循环读取文件时遇到问题:

#include <stdio.h>

int main(){

FILE* f = fopen("teste.txt", "r");
double i;

do{

fscanf(f, "%lf ", &i);
printf(" %.0lf", i);

} while (fscanf(f, "%lf", &i) != EOF);

return 0;

}
Run Code Online (Sandbox Code Playgroud)

该文件是ike:

1 2 3 4 5

当我运行程序时,输出是:

1 3 5

谁能帮我?

M.M*_*M.M 7

您正在丢弃每次呼叫的结果fscanf.

while您调用fscanf并检查的情况下,EOF但您不使用值i.然后下一个语句返回到循环的顶部,执行另一个语句fscanf读取下一个值(并且不检查错误).

此外,如果文件包含任何无效的文本,则会出现无限循环double.

循环应该是:

while ( fscanf(f, "%lf", &i) == 1 )
{
    printf(" %.0f", i);
}
Run Code Online (Sandbox Code Playgroud)