逐行读取文本文件中的信息

时间:2011-11-07 17:02:16

标签: c file-io

我想学习如何逐行阅读.txt中的C文件,以便每行中的信息可用于循环等。我没有这方面的功课练习但是我需要弄清楚一个为天文学包编写脚本的项目。

因此,为了学习如何做到这一点,我创建了一个名为list.txt的文件,其中的数字分别为1,2,3,4,5,6,7,8,9,并且我希望程序来对每一行的值求和。我还创建了一个名为sum.txt的输出文件,该程序应该对行进行求和,并将总和打印到输出文件中。

我运行程序时遇到错误,我不确定问题是什么,因为我不完全理解这一点。我在一本关于C的书中得到了这个程序,并尝试修改它以在我的PC上运行它。

我需要能够做到这一点的原因是因为我需要从列表中的每一行获取信息(每行包含一个字符串)。但我想先学会用数字来学习。

以下是代码:

#include<stdio.h>

int main(void)
{
    int a, sum = 0;
    FILE *ifp, *ofp;
    ifp = fopen("list.txt", "r");
    ofp = ("sum.txt", "w");
    while (fscanf(ifp, "%d", &a) == 1)
    {
        sum += a;
        fprintf(ofp, "The sum is %d. \n", sum);
        fclose(ifp);
    }
    return 0;
}

2 个答案:

答案 0 :(得分:6)

你忘记在这里写fopen

ofp = ("sum.txt", "w");

此外,您应该将fclose(可能还有fprintf)移出while循环,因为您只想在读完所有行后关闭文件。

答案 1 :(得分:0)

您需要在循环后关闭输入文件并将fprintf移出循环:

} // end of while loop
fprintf(ofp, "The sum is %d. \n", sum);
fclose(ifp);

另外,请不要忘记进行错误检查,并确保在继续操作之前打开了文件,并确保打开了文件。