gpt4 book ai didi

c - 字符串数组的部分副本

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:48:06 24 4
gpt4 key购买 nike

我可以做这样的事情,将字符串数组内容从一个复制到另一个吗?

char **words = (char **)malloc(sizeof(char*) * lines_allocated); 
char **childWords = (char **)malloc(sizeof(char*) * len1);
int i;
for(i = startIndex; i < endIndex; i++) {
childWords[i] = words[i];
}

最佳答案

您正在复制指向字符串的指针,而不是字符串本身。您应该将 for 循环更改为

for(i = startIndex; i < endIndex; i++) {
childWords[i] = strdup(words[i]); // creates a new copy of the string
}

strdup 通过分配足够的内存来复制传递给它的字符串来复制字符串,即它返回一个指向新字符串的指针,该字符串是 words 指向的字符串的副本[我]。指针可以传递给 free。它在 string.h 头文件中声明。

请注意,您不应强制转换 malloc 的结果。如果您忘记包含 stdlib.h 头文件,这没有任何好处,而且可能会导致错误。此外,strdup 是 POSIX 标准的一部分,在底层,它实际上与 mallocstrcpy 执行相同的操作。在这里阅读更多 What does strdup do?

关于c - 字符串数组的部分副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21821221/

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