gpt4 book ai didi

C 将 char * 复制到 char[]

转载 作者:太空宇宙 更新时间:2023-11-04 08:53:57 26 4
gpt4 key购买 nike

您好,我正在尝试将 char * 指针复制到 char [] 数组。

这是我目前的代码

char * string_add(char * base, char * toAdd)
{
char * string=malloc(strlen(base)+streln(toAdd)+1);
sprintf(string,"%s%s",base,toAdd);
char returnString[strlen(string)+1];
// here comes my problem:
memcpy(returnString,string,strlen(string)+1);
// want to add free(string) here
return returnString;
}

我想用这样的函数来保存代码。我不想照顾每一个分配的内存。我也试过了

memcpy(&returnString,string,strlen(string)+1);

和一些带有 strcpy 和 strncpy 的变体。但以下问题仍然存在:

如果我像这样调用函数两次:

int main(int argc, char * argv[])
{
char * str1=string_add(argv[1],"-test1");
char * str2=string_add(argv[1],"-test2");
printf("%s, %s", str1,str2);
}

输出如下:

abc-test2, abc-test2

我怎样才能意识到这一点?

提前致谢!

最佳答案

在 C 中,你必须看管 malloced 内存,你声明的 char 数组在堆栈上,函数返回后将消失,只有 malloc 内存会徘徊。是的,您必须照看并清理它。

关于C 将 char * 复制到 char[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18303793/

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