gpt4 book ai didi

c - 从文件中读取未知数量的整数

转载 作者:行者123 更新时间:2023-12-04 07:07:36 27 4
gpt4 key购买 nike

这是一个从文件中读取未知数量的整数并计算平均值的函数。由于某种原因,文件中的最后一个元素被读取了两次。有人可以解释为什么吗?我知道如何修复它,但想知道幕后发生了什么。

int total = 0, count = 0, input;
FILE *filePtr;

filePtr = fopen("file.txt", "r");
if (filePtr != NULL)
do
{
fscanf(filePtr, "%d", &input);
total = total + input;
count++;
} while (!feof(filePtr));

printf ("%d", total);

我通过在循环中放置第二个 if 来修复它:

    do
{
fscanf(filePtr, "%d", &input);
if (!feof(filePtr))
{
total = total + input;
count++;
}
} while (!feof(filePtr));

最佳答案

您没有检查 fscanf 是否真的找到了一个数字。最后一次调用将失败,因为您很可能只是在阅读文件中的最后一个换行符。

试试这个:

do
{
if (fscanf(filePtr, "%d", &input)==1) {
total = total + input;
count++;
}
} while (!feof(filePtr));

编辑: @Andrew 是对的——你真的应该检查循环顶部的 EOF:

while (!feof(filePtr)) {
/* ... */
}

关于c - 从文件中读取未知数量的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19681192/

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