所以我读了很多类似的帖子,但我无法确定我的问题在这里。
{
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数字文件中打印所有数字的总数......除了每次运行它之外,一切似乎都有效。我得到同一文件的不同总数。
答案 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