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