c语言对字符串逆序,【C语言】 字符串逆序

【C语言】 字符串逆序

字符串逆序有多种办法,下面我们分方法而论:

// 非递归实现字符串反转:

char *reverse(char *str)

{

if( !str )

{

return NULL;

}

int len = strlen(str);

int i,j;

char temp;

for( i = 0,j=len-1; i

{

// 交换前后两个相应位置的字符

temp=str[i];

str[i]=str[j];

str[j]=temp;

}

return str;

}

int main()

{

char src[] = {"abcdef"};

char *pdest = reverse(src);

puts(src);

return 0;

}

//递归就是一种栈结构:

#include

#include

void reverse_string(const char * const string)

{

assert(string);

if (*string == '\0')

return;

else

reverse_string(string+1);// 先将字符压栈

putchar(*string);// 再将字符按照先进后出的顺序输出

}

int main()

{

char string[20] = {0};

scanf("%[^\n]",string);

reverse_string(string);

printf("\n");

return 0;

}

亦可:(若要求不使用其他库函数)

#include

#include

int my_strlen(const char *string)

{

assert(string);

if(*string == '\0')

{

return;

}

else

return 1+my_strlen(string+1);

}

char *reverse_string(char *string,int len)

{

assert(string);

if(!string)

{

return NULL;

}

if(len > 1)

{

char tmp = string[0];

string[0] = string[len-1];

string[len-1] = '\0';           // 最后一个字符在下次递归时不再处理

reverse_string(string + 1,len-2);//递归调用,每调用一次,要反转的字符串分别从头和末尾各减少一个

string[len-1] = tmp;

}

return string;

}

int main()

{

char string[20] = {0};

int len;

scanf("%s",string);

len = my_strlen(string);

reverse_string(string,len);

printf("%s\n",string);

return 0;

}

©著作权归作者所有:来自51CTO博客作者Vs吕小布的原创作品,谢绝转载,否则将追究法律责任

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值