1.非递归方法
#include <stdio.h>
char* reverse_string(char* string)
{
char* start = string;
char* end = string + strlen(string) - 1;
for (; start < end; start++, end--) {
char ch = *start;
*start = *end;
*end = ch;
}
return string;
}
int main()
{
char buf[] = "nihao";
printf("%s\n",reverse_string(buf));
return 0;
}
运行结果
2.递归方法
char* reverse_string(char* string) {
if (strlen(string) < 2) {
return string;
}
int len = strlen(string) - 1;
char ch= *string;
*string = *(string + len);
*(string + strlen(string) - 1) = '\0';
reverse_string(string + 1);
*(string + len) = ch;
return string;
}
int main()
{
char buf[] = "nihao";
printf("%s\n",reverse_string(buf));
return 0;
}
注:递归方法栈空间开辟大,容易造成栈溢出,空间复杂度大,但是思路简单。