我无法将字符串从缓冲区复制到包含字符串 (char *) 的新数组

I have trouble to copy the string from buffer to a new array which contains strings (char *)

我正在尝试使用 `strcpy' 将缓冲区中的字符串复制到包含字符串 (char *) 的新数组中。我总是收到段错误的错误消息。但我不知道为什么会这样。

char buffer[1024];
FILE *fp1;
fp1 = fopen("input.txt", "r");
char* array[file_row];
int index = 0;

while (fgets(buffer, sizeof(buffer), fp1) != NULL) {
    strcpy(array[index++], buffer);
    printf("%s", buffer);
}

fclose(fp1);
return 0;

这是我的部分代码,希望能提供足够的信息来解决我的问题。我无法为该数组分配内存,因为它的大小是固定的,而且我认为我不需要分配数组中的每个槽,因为 strcpy 已经为我分配了。另外,我可以打印缓冲区中的内容,所以我认为缓冲区工作得很好。然后我不确定为什么会发生此错误。有人可以帮我吗?

这个

char* array[file_row];

是一个指向任何地方的指针数组。为了对它们进行 strcpy,它们必须指向一段足够大的内存来获取字符串。简单的解决方案是使用 strdup 它将分配内存并为您复制字符串

而不是

  strcpy(array[index++], buffer);

  array[index++] = strdup(buffer);

(在 windows 你需要 _strdup