读取和添加从C

时间:2015-09-21 03:09:13

标签: c

所以我读了很多类似的帖子,但我无法确定我的问题在这里。

{
    FILE * fp;
    fp = fopen("integer_store.txt", "r");

    int total;
    int i;

    clock_t start, end;
    double time;

    start = clock();

    fscanf(fp, "%d", &i);

    while(!feof(fp)) {

        fscanf(fp, "%d", &i);
        total = total + i;

    }

    end = clock();
    time = ((double)(end-start)) / CLOCKS_PER_SEC;

    printf("Total: %d\n",total);
    printf("Execution time: %f seconds \n",time);
    fclose(fp);

}

目标是在由空格分隔的ASCII数字文件中打印所有数字的总数......除了每次运行它之外,一切似乎都有效。我得到同一文件的不同总数。

4 个答案:

答案 0 :(得分:4)

请先将变量total初始化为int total = 0;

此外,您应该检查fopen是否成功(fp不是NULL)。

答案 1 :(得分:2)

您永远不会初始化total,因此您正在增加随机内存。

答案 2 :(得分:2)

total未初始化为0.

试试这个声明:

int total = 0;

答案 3 :(得分:0)

为了补充说明,在C和C ++中,任何尚未初始化的变量实际上都有一个值,并且该值是随机的。这就是为什么每次运行程序时,都会得到不同的结果。

如果您想要更多解释,请查看此信息: https://en.wikipedia.org/wiki/Uninitialized_variable