我试图用返回值将字符串反转为反向字符串,将输入参数作为输入字符串。 这是我的代码:
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”之后添加了一些不需要的字符。有人可以建议我吗?我不想更改函数参数并返回语法。
答案 0 :(得分:0)
您需要照顾最后的'\0'
。
尝试添加else
语句:
if (*string)
{
revStr[i++] = *string;
reverseString(string + 1);
}
else
revStr[i] = '\0';