gpt4 book ai didi

将字符串数组复制到另一个字符串数组 - C

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

我有一个包含字符串数组 (char **args) 的结构。我需要能够将字符串数组 (char *input[32]) 复制到结构的该元素中。例如:

Thing s;
s.args = input; //assuming input already has some strings in it

当我尝试这样做时,下次调用 s.args = input 时,它会完全覆盖旧输入。如何以适当的方式实现此功能?

编辑

这就是结构的样子。

typedef struct{
char **args;
} Thing;

然后在我的函数中,我声明:

char *args[512];
.....
args[count] = string //string is a char *

最后,我想做的是:

s.args = input.

最佳答案

您没有复制它。您实际上只是在设置指针。实际上你有这个:

char **args;
char *other[32];
args = other;

您需要实际复制数组 - 为此您需要为其分配内存:

s.args = malloc( 32 * sizeof(char*) );

for( i = 0; i < 32; i++ ) s.args[i] = input[i];

这是一个浅拷贝——它会复制你的字符串指针,但不会复制它们。如果您更改 input 中的字符串内容,该更改将反射(reflect)在 s.args 中。要复制字符串,您必须这样做:

for( i = 0; i < 32; i++ ) s.args[i] = strdup(input[i]);

既然你已经分配了内存,那么在你再次覆盖 s.args 之前(以及当你的程序完成时)你需要释放你分配的东西。这包括字符串(如果您调用了 strdup);

if( s.args != NULL ) {
// Only do the loop if you did a deep copy.
for( i = 0; i < 32; i++ ) free(s.args[i]);

// Free the array itself
free(s.args);
}

关于将字符串数组复制到另一个字符串数组 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12469564/

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