小编Ard*_*ino的帖子

getline()/ strsep()组合导致分段错误

运行下面的代码时,我遇到了分段错误.

它应该基本上读取.csv超过3M线的文件并在之后执行其他操作(与问题无关),但在207746次迭代后它返回分段错误.如果我删除p = strsep(&line,"|");并打印整个line它将打印> 3M线.

int ReadCSV (int argc, char *argv[]){

    char *line = NULL, *p;
    unsigned long count = 0;

    FILE *data;
    if (argc < 2) return 1;
    if((data = fopen(argv[1], "r")) == NULL){
        printf("the CSV file cannot be open");
        exit(0);
    }


    while (getline(&line, &len, data)>0) {

        p = strsep(&line,"|");  

        printf("Line number: %lu \t p: %s\n", count, p);
        count++;
    }

    free(line);
    fclose(data);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想它与内存分配有关,但无法弄清楚如何修复它.

c getline segmentation-fault strsep

3
推荐指数
1
解决办法
183
查看次数

标签 统计

c ×1

getline ×1

segmentation-fault ×1

strsep ×1