【发布时间】:2018-03-13 05:04:47
【问题描述】:
我正在尝试解析一个文件并拥有一个字符指针数组,其长度是文件中的行数。我想将每一行复制到该数组的一个元素中,但不断出现分段错误。我看不出我做错了什么,所以如果有人可以提供帮助,将不胜感激。这是我的代码。
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 函数工作正常,但它之后的赋值导致分段错误。
【问题讨论】:
-
numLines的值是多少?i的值是多少?将unsplitLines中的每个条目设置为指向同一个地方有什么意义? -
假设您修复了
unsplitLines的定义(或者已经可以),您仍然需要分配每个unsplitLines[i]指向的内存。否则,所有条目都指向同一个(相当小的)数组,您只能看到循环后输入的最后一行。考虑 POSIX 函数strdup()的优点(或其他优点)。
标签: c