#include<stdio.h>
#include<string.h>
char *my_str_reverse(char *str)//逆转字符串
{
char *p=str;
char *ret=str;
while(*str++)
{
NULL;
}
str -= 2;
while(p<str)
{
char temp;
temp=*p;
*p=*str;
*str=temp;
p++;
str--;
}
return ret;
}
void my_str_reverse_print(char *str)//倒序输出
{
char* r;
r=str;
while(*str++)
{
NULL ;
}
str-=2;
printf("String=");
do
{
printf("%c",*str);
}while(*str--!=*r);
printf("\n");
}
char *reverse(char *str)
{
int len = strlen(str);
if( !*str )
{
return NULL;
}
if( len > 1 )
{
char ctemp =str[0];
str[0] = str[len-1];
str[len-1] = '\0';// 最后一个字符在下次递归时不再处理
reverse(str+1); // 递归调用
str[len-1] = ctemp;
}
return str;
}
int main()
{
char string[]="123456";
printf("原始 String=%s\n",string) ;
my_str_reverse_print(string);//倒序输出字符串
printf("String=%s\n",my_str_reverse(string));//逆转字符串 1
printf("String=%s\n",reverse(string));//递归逆转字符串 2 把1中的又逆转过来了
return 0;
}
递归翻转字符串算法: