首页 > 解决方案 > 在小文件中读取c中的文件时出现分段错误

问题描述

我在读取文件时在 c 中遇到了分段错误(核心转储)。我将此代码用于其他数百万个文件,它工作正常。但是当其他文件从 250 开始时,这个文件有 138 行。所以我猜这就是问题所在?(代码在我帖子的底部)它假设可以帮助我处理读取的数据,这样我就可以在代码中对它们进行操作,但无论我做什么,它都只是“核心转储”

它在这里中断:

while (fgets(line, sizeof line, fp) != NULL) {
        strtok(line, "\n");
        parseLine(line, &dataList);
    }

我已经尝试过:

char *line = malloc( sizeof(char) * ( LINE_BUFFER + 1 ) 

代替

 char line[LINE_BUFFER];

这是读取文件的代码部分:

#define DIFF_BUFFER 99999999

DataLineNode *loadData(const char *fileName) {
    FILE *fp;
    char line[LINE_BUFFER];
    DataLineNode *dataList = NULL;

    fp = fopen(fileName, "r");
    if (fp == NULL) {
        printf("No file '%s'.\n", fileName);
        exit(EXIT_FAILURE);
    }

    while (fgets(line, sizeof line, fp) != NULL) {
        strtok(line, "\n");
        parseLine(line, &dataList);
    }
    fclose(fp);
    return dataList;
}

````


标签: cfilesegmentation-fault

解决方案


推荐阅读