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

高手

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

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));
r3mainer

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

试试这个:

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

编辑: @Andrew是正确的-您应该真正在循环顶部检查EOF:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从 HTML 自己的目录中读取未知数量的文件

如何仅从文本文件中将具有未知数量整数的行读取到数组中(在 C 中)

循环遍历文件夹中未知数量的文件

如何读取未知数量的输入?

C++读取未知数量的整数到cin并输出总和

Ruby - 从文件创建未知数量的变量

如何将未知数量的整数扫描到C中的数组中?

在函数中传递未知数量的参数

在 React 中处理未知数量的状态

在MATLAB中创建未知数量的uicontrols

从输入中获取未知数量的参数

以行分隔的未知数量的整数读入一个向量中

Java-如何从inputStream(socket / socketServer)中读取未知数量的字节?

如何在Java中读取以;分隔的CSV,该计数可能包含未知数量的元素

以 4 为一组总结未知数量的整数

使用扫描仪(Java)处理未知数量的整数对

在pandas csv读取时处理未知数量的列

以未知数量的参数读取单词 discord.py

Bat文件,用于编译未知数量的C文件

在Django框架下上传未知数量(动态决定)的文件

使用-f选项尾部未知数量的文件

通过VBScript(VBS)使用通配符移动未知数量的文件

在特定目录中加载未知数量的文件

未知数量的用户输入。输入是 .xlsx 文件

在Postgres中查询未知数量的关键字

PHP从未知数量的文本输入中获取值

合并数组中未知数量的子数组

Vanilla JavaScript中的Dropdowm菜单-用于未知数量的按钮

在Javascript中按日期对未知数量的对象进行排序