我正在尝试解析一个文件并拥有一个字符指针数组,其长度是文件中的行数。我想将每一行复制到该数组的一个元素中,但不断出现段错误。我不明白我做错了什么,所以如果有人可以提供帮助,我将不胜感激。这是我的代码。
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 函数工作正常,但其后的赋值会导致段错误。
最佳答案
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);
}
关于C - 如何将一个字符串复制到字符数组的一个元素中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49248643/