C - 如何将一个字符串复制到字符数组的元素中?

时间:2018-03-13 05:04:48

标签: c

我正在尝试解析一个文件,并且有一个字符指针数组,其长度是文件中的行数。我想将每一行复制到此数组的元素中,但仍然会遇到分段错误。我不明白我做错了什么,所以如果有人能提供帮助,我将不胜感激。这是我的代码。

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函数工作正常,但是后面的赋值会导致分段错误。

1 个答案:

答案 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);
}