所以我试图组合a和b的cstring数组的元素0并返回指向调用者的指针。在函数内部设置了returnStr,但是当我从调用函数中分配返回值时,该值现在不是它应该的值。
char* combineCstr(char **a, char **b)
{
char *returnStr;
char str[20];
strcpy(str, a[0]);
strcat(str, "+");
strcat(str, b[0]);
returnStr= str;
return returnStr;
}
我很困惑,任何帮助都会受到赞赏,谢谢。
答案 0 :(得分:4)
您正在返回本地数组(str
)。当您的函数退出时,将回收该内存,因此这不是有效的代码。您应该收到编译器警告。
如果您不能相信任何一个输入都有结果空间,则必须使用例如分配新内存。 malloc()
并将字符串连接到该内存中。它不会受到您退出的功能的影响。