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
谁能帮我?
您正在丢弃每次呼叫的结果fscanf.
在while您调用fscanf并检查的情况下,EOF但您不使用值i.然后下一个语句返回到循环的顶部,执行另一个语句fscanf读取下一个值(并且不检查错误).
此外,如果文件包含任何无效的文本,则会出现无限循环double.
循环应该是:
while ( fscanf(f, "%lf", &i) == 1 )
{
printf(" %.0f", i);
}
Run Code Online (Sandbox Code Playgroud)