我正在尝试解析一个文件,并且有一个字符指针数组,其长度是文件中的行数。我想将每一行复制到此数组的元素中,但仍然会遇到分段错误。我不明白我做错了什么,所以如果有人能提供帮助,我将不胜感激。这是我的代码。
char * unsplitLines[numLines];
char line[20];
int i;
for(i = 0; i < lines; i++)
{
fgets(line, 20, fp);
//printf("%s\n", line);
unsplitLines[i] = line;
}
gets函数工作正常,但是后面的赋值会导致分段错误。
答案 0 :(得分:0)
fgets
不为您分配缓冲区,因此unsplitLines
中的所有元素都存储相同的指针line
,其内容是文件的结束行。
尝试asprintf
char * unsplitLines[numLines];
char line[20];
int i;
for(i = 0; i < lines; i++)
{
fgets(line, 20, fp);
asprintf(unsplitLines[i], "%s", line);
}