我无法将字符串从缓冲区复制到包含字符串 (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
)
我正在尝试使用 `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
)