一般来说,我对C还比较陌生,我对一些代码有问题。这是非常简单的代码:代码的目标是将给定的char指针数组或char**source复制到给定的char**destination。
我遇到的问题是,有时(通常当源代码中有两个以上的字符串时),第一个元素会完全损坏,当我打印出目标时,它会打印出类似“@”的内容对于第一个元素,用其他元素打印精细。
执行复制的代码是:
void CopyArrayOfStrings(char **source, int numStrings)
{
char **destination = malloc(numStrings);
for (int i = 0; i < numStrings; i++)
{
destination[i] = malloc(strlen(source[i] + 1);
strcpy(destination[i], source[i]);
}
}
注意,我遗漏了检查malloc结果是否为空的代码。
最佳答案
您需要将destination
的分配更改为:
char **destination = malloc(numStrings*(sizeof(char*)));
分配
char *
指针的数量来保存字符串。还要验证是否正确地将
char **
作为字符串的源数组传递。