gpt4 book ai didi

复制 Char * 数组会损坏数据

转载 作者:太空宇宙 更新时间:2023-11-04 03:59:45 25 4
gpt4 key购买 nike

总的来说,我是 C 语言的新手,我遇到了一些代码问题。这是非常简单的代码:代码的目的是将给定的 char 指针数组或 char **source 复制到给定的 char **destination。

我遇到的问题是有时(通常当我在源中有超过 2 个字符串时)第一个元素会完全损坏,当我最终打印出目标时,它会打印出类似“;@?”的内容。对于第一个元素,其他元素打印正常。

执行复制的代码是:

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 结果是否为 NULL 的代码。

最佳答案

您需要将destination 的分配更改为:

char **destination = malloc(numStrings*(sizeof(char*)));

分配多个 char * 指针来保存字符串。

还要验证您是否正确传递了 char ** 作为字符串源数组。

关于复制 Char * 数组会损坏数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13216518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com