<span style="font-size:18px;">#include<stdio.h>
void reverse_string(char *string)
{
int len = 0;
char*q = string;
//strlen()的实现
while (*q != '
<span style="font-size:18px;">#include<stdio.h>
void reverse_string(char *string)
{
int len = 0;
char*q = string;
//strlen()的实现
while (*q != '\0')
{
q++;
len++;
}
if (len <= 1)
return;
else
{
//递归实现的字符串翻转
int tmp = string[0];
string[0] = string[len - 1];
string[len - 1] = '\0';
//reverse_string(string++);这样写是错误的,下一次递归调用时没有将下一个字符的地址传过去且当下次返回来时string已经发生改变
//reverse_string(++string);这样写也是错误的,虽然下一次递归调用时将下一个字符的地址传过去了,但是当下次返回来时string也已经发生了变化
reverse_string(string + 1);
string[len - 1] = tmp;
}
}
int main()
{
char p[] = "bit-tech";
reverse_string(p);
printf("%s\n", p);
return 0;
}
</span>
')
{
q++;
len++;
}
if (len <= 1)
return;
else
{
//递归实现的字符串翻转
int tmp = string[0];
string[0] = string[len - 1];
string[len - 1] = '
<span style="font-size:18px;">#include<stdio.h>
void reverse_string(char *string)
{
int len = 0;
char*q = string;
//strlen()的实现
while (*q != '\0')
{
q++;
len++;
}
if (len <= 1)
return;
else
{
//递归实现的字符串翻转
int tmp = string[0];
string[0] = string[len - 1];
string[len - 1] = '\0';
//reverse_string(string++);这样写是错误的,下一次递归调用时没有将下一个字符的地址传过去且当下次返回来时string已经发生改变
//reverse_string(++string);这样写也是错误的,虽然下一次递归调用时将下一个字符的地址传过去了,但是当下次返回来时string也已经发生了变化
reverse_string(string + 1);
string[len - 1] = tmp;
}
}
int main()
{
char p[] = "bit-tech";
reverse_string(p);
printf("%s\n", p);
return 0;
}
</span>
';
//reverse_string(string++);这样写是错误的,下一次递归调用时没有将下一个字符的地址传过去且当下次返回来时string已经发生改变
//reverse_string(++string);这样写也是错误的,虽然下一次递归调用时将下一个字符的地址传过去了,但是当下次返回来时string也已经发生了变化
reverse_string(string + 1);
string[len - 1] = tmp;
}
}
int main()
{
char p[] = "bit-tech";
reverse_string(p);
printf("%s\n", p);
return 0;
}
</span><span style="font-size:18px;">#include<stdio.h>