0

可能重复:
从 C 中的函数返回字符串

所以我试图组合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;
}

我非常困惑,任何帮助将不胜感激,谢谢。

4

1 回答 1

4

您正在返回一个本地数组 ( str)。当您的函数退出时,该内存将被回收,因此这不是有效代码。您应该已经收到编译器警告。

如果您不能相信任一输入都有用于结果的空间,则必须使用 eg 分配新内存malloc()并将字符串连接到该内存中。它不会受到您的功能退出的影响。

于 2013-02-05T14:10:51.400 回答