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

标签 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;
}

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

知道如何正确执行吗?谢谢

最佳答案

动态内存,是的,但它用在了错误的地方。再考虑一下这段代码:

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

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

正确的方法是在func()中分配内存,并返回指向已分配内存的指针。请记住在不使用时将其释放。

关于c - 如何在C中正确返回字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23872624/

相关文章:

c - 返回函数指针类型

c - 这个数组的长度是多少? c语言

java - 在 Scala 中格式化字符串的最佳方式是什么?

javascript - 识别字符串中非大写专有名词的策略?

java - 在 Java/Eclipse 中推断变量类型,如 C#'s "var"

c - 我在这个循环中做错了什么?

c - 在 C 中使用 libmicrohttpd 实现 HTTP 302 响应

python - 将左侧列化的列化行格式化为列化数据?

c - 解释 C 中的一些函数

python不要在撇号后大写