我有 1 个函数,我想将分配的字符串的地址返回给主函数并分配一个具有相同地址的新字符串指针,以便新字符串将具有旧字符串的内容。
例如:
unknown_datatype function()
{
char *old = "THE STRING";
return old;
}
int main()
{
char *snew = "";
snew = function();
return 0;
}
*unknown_datatype 表示我不知道要放在那里...
*如何在不更改 main() 方法中的任何内容的情况下处理此问题
最佳答案
通常,您将传递字符数组中第一个元素的地址以及长度,并让函数填充它。
int fillMyString(char *str, int buffer_size)
{
if(buffer_size > strlen("test"))
{
strncpy(str, "test", buffer_size-1);
str[buffer_size-1] = '\0';
return strlen(str);
}
return 0;
}
//In some function or main
char buffer[1024];
fillMyString(buffer, 1024);
ASSERT(!strcmp(buffer, "test"));
编辑:您提到出于某种原因您需要返回一个 char*。在这种情况下,我建议使用 malloc
在函数内部分配字符串,但要确保无论何时调用该函数,最终都会释放
返回值。
关于c - 如何返回一个字符串地址,然后将其分配给一个新的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2619229/