首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将文本文件转换为数组:分段错误

将文本文件转换为数组:分段错误
EN

Stack Overflow用户
提问于 2021-06-04 20:55:54
回答 1查看 20关注 0票数 0

我正在解决C语言中的一个问题,我必须读取一个包含象海豹体重的文件,将该文件的内容放入一个数组中,然后使用该数组来查找象海豹的平均重量。我正在使用带有GCC9编译器的VNC查看器版本、VSCode中的C/C++编译运行扩展以及VSCode中的C/C++ IntelliSense、调试和代码浏览扩展。当我尝试运行代码时,我最终得到了一个分段错误,我不知道如何修复它。有人能帮帮我吗?code error

EN

回答 1

Stack Overflow用户

发布于 2021-06-04 22:46:20

这可能是一个较晚的答案,但是,数组weights只有一个元素,所以当您尝试访问大于1的索引时,您就越界了。取而代之的是,在读取n之后,使用指针并对其执行malloc操作,为指针分配内存。我建议你在malloc上查找,以获得更清晰的信息。此外,在代码的末尾还有一些垃圾:fclose;。应该是fclose(fp);

代码语言:javascript
复制
#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!
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67837631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档