组合两个C-Strings但是没有指定返回指针?

时间:2013-02-05 14:09:13

标签: c

  

可能重复:
  Returning a string from a function in 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;
}

我很困惑,任何帮助都会受到赞赏,谢谢。

1 个答案:

答案 0 :(得分:4)

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

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