gpt4 book ai didi

c - do-while 中的 fscanf 不工作

转载 作者:太空宇宙 更新时间:2023-11-04 00:37:27 25 4
gpt4 key购买 nike

所以,我在使用 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;

}

文件是这样的:

1 2 3 4 5

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

1 3 5

谁能帮帮我?

最佳答案

您将丢弃每次调用 fscanf 的结果。

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

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

循环应该是:

while ( fscanf(f, "%lf", &i) == 1 )
{
printf(" %.0f", i);
}

关于c - do-while 中的 fscanf 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26209689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com