如何在C中正确返回字符串

时间:2014-05-26 14:41:35

标签: c string function char return

我有一个简单的问题,因为我无法找到从函数返回字符串并将其放入另一个字符串的方法。我在C中的代码是:

#include <string.h>
#include <stdlib.h>
#include <stdio.h>

char *func();

int main()
{
        char *temp = malloc(sizeof(char) * 25);

        temp = func();
        printf("String received: %s\n", temp);

        return 0;
}

char *func()
{
        char str[25];

        strcpy(str, "HEY THERE!");
        printf("String sent: %s\n", str);

        return str;
}

我得到了这个结果: 发送的字符串:嘿嘿! 收到的字符串:

知道怎么做得好吗?感谢

1 个答案:

答案 0 :(得分:2)

动态内存,是的,但它在错误的地方使用。再想一想这段代码:

char *temp = malloc(sizeof(char) * 25);
temp = func();

您正在做的是为temp分配一些内存,然后为其分配另一个值:func()的返回值,即内存泄漏。

正确的方法是在func()中分配内存,并将指针返回到已分配的内存。如果没有使用它,请记得释放它。