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

fgets不为您分配缓冲区,因此unsplitLines所有元素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); }