运行下面的代码时出现分段错误。
它基本上应该读取一个.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;
}
我想这与内存分配有关,但无法弄清楚如何解决它。