我有一个简单的问题要问,因为我无法真正找到从函数返回字符串并将其放入另一个字符串中的方法。我的 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/