在反转带有返回值的字符串时出现问题?

时间:2018-08-05 18:42:43

标签: c++

我试图用返回值将字符串反转为反向字符串,将输入参数作为输入字符串。 这是我的代码:

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”之后添加了一些不需要的字符。有人可以建议我吗?我不想更改函数参数并返回语法。

1 个答案:

答案 0 :(得分:0)

您需要照顾最后的'\0'

尝试添加else语句:

if (*string)
{
     revStr[i++] = *string;
    reverseString(string + 1);
}
else
    revStr[i] = '\0';