【发布时间】:2014-04-03 09:27:49
【问题描述】:
这是我的代码的一部分,我试图递归地反转字符串:
char reverse[10];
gets(reverse);
reverseString(reverse, (strlen(reverse) - 1));
void reverseString(char ar[], int n)
{
if (n == 0)
{
return;
}
else
{
int temp = ar[n];
ar[n] = *(ar);
*(ar) = temp;
reverseString((ar + 1), (n - 1));
}
}
当我输入字符串“hello”时,它会将字符串更改为“ohell”。我需要它将字符串完全反转为“olleh”。有人可以帮忙吗?
【问题讨论】:
-
gets() 害死我了
-
尝试制作积木。通过交换完整的块来反转,一旦它们被交换,就递归地交换块的内部。
-
使用调试器查看实际被替换的内容。你会感到惊讶...
-
您没有在正确的时间停止递归。
-
永远不要使用
gets,它甚至不再是最新的标准了。
标签: c string algorithm recursion reverse