gpt4 book ai didi

c - 从函数返回字符串时遇到问题

转载 作者:太空宇宙 更新时间:2023-11-04 06:08:08 25 4
gpt4 key购买 nike

我在 C 中的字符串基本原理上遇到了麻烦。我有一个功能:

char *editStr(char *str) {
char new[strlen(str)];
... do some editing ...
return new;
}

我将如何返回名为“new”的字符数组。据我所知,该函数的返回值是一个 char*,这意味着它要求一个指向字符串第一个字符的指针。现在,我想问题是我正在返回一个数组字符。我试图返回指向“new”中第一个字符的指针,但这似乎也不起作用。我试过“返回*新[0]”。我的字符串知识很差。

最佳答案

这里有各种问题,但 return new; 的数组/指针问题不是其中之一。

首先,你想要:

char new[strlen(str) + 1];

这样您就有足够的空间容纳空终止符。

你的 new 是在栈上分配的,所以返回它只会导致悲伤和困惑;你会想要:

char *new = malloc(strlen(str) + 1);

相反,以便函数返回时内存仍然有效。

就您真正的问题而言,C 中的数组是第一个元素的地址,因此您的 return new; 没问题(取决于上面提到的堆栈与堆问题)。 C 数组很快就会退化为指针,因此您无需担心在声明函数返回指针时返回数组。

关于c - 从函数返回字符串时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5655853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com