【发布时间】:2018-08-05 18:42:42
【问题描述】:
我正在尝试将返回值作为反转字符串并将输入参数作为输入字符串反转字符串。 这是我的代码:
char* reverseString(char* string)
{
static int i = 0;
static char *revStr = new char[strlen(string)+1];
if (*string)
{
reverseString(string + 1);
revStr[i++] = *string;
}
return revStr;
}
int main(void)
{
char* str = "Test it";
cout << reverseString(str) << endl;;
}
输出:
ti tseT═²²²²
Press any key to continue . . .
我在 Visual Studio 2013 中尝试过这个。我期望输出是:
ti tseT
Press any key to continue . . .
但我没有得到正确的输出,在“tseT”之后添加了一些不需要的字符。有人可以建议我吗?我不想更改函数参数和返回语法。
【问题讨论】:
-
请解释您为什么不使用
std::string?如果这是一项有限制的作业,您应该将它们包含在问题中,以便我们给出适当的答案。 -
使用字符串类或 c++11 我可以轻松做到这一点,但我的意图并非如此。我只是想纠正我的函数体。
-
您错过了将原始 c 字符串结束指示符
'\0'放在末尾。这个问题可能还有很多重复。 -
@A.Gupta 只需将
revStr[i] = '\0';放在return语句之前。 -
@A.Gupta 另请注意,您可以简单地使用
std::reverse()算法来实现您想要的。您实际上不需要使用std::string来执行此操作。
标签: c++