发布于 2021-06-04 22:46:20
这可能是一个较晚的答案,但是,数组weights只有一个元素,所以当您尝试访问大于1的索引时,您就越界了。取而代之的是,在读取n之后,使用指针并对其执行malloc操作,为指针分配内存。我建议你在malloc上查找,以获得更清晰的信息。此外,在代码的末尾还有一些垃圾:fclose;。应该是fclose(fp);
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int main() {
int *weights, n = 0, i;
double sum = 0;
FILE* fp = fopen("elephant_seal_data.txt", "rb");
if (!fp)
exit(1);
fscanf(fp, "%d\n", &n);
weights = malloc(n * sizeof(int));
for (i = 0; i < n; ++i)
fscanf(fp, "%d", &weights[i]);
for (i = 0; i < n; ++i)
sum += weights[i];
printf("average is %.2f\n", sum / n);
fclose(fp);
free(weights); // don't forget to free the memory!
}https://stackoverflow.com/questions/67837631
复制相似问题