C语言中,如何逆序任意输出的字符串? 求简单易懂的方法。

 我来答
bm7638
2011-11-05 · TA获得超过1445个赞
知道小有建树答主
回答量:1425
采纳率:27%
帮助的人:432万
展开全部
一般的逆序用两个while,但没多少人用,给你三种常见方法
一 设置两个指针,分别指向字符串的头部和尾部,然后交换两个指针所指的字符,并向中间移动指针直到交叉。

char *Reverse(char *s){ // p指向字符串头部 char *p = s ; // q指向字符串尾部 char *q = s ; while(*q) ++q ; q -- ; // 交换并移动指针,直到p和q交叉 while(q > p) { char t = *p ; *p++ = *q ; *q-- = t ; } return s ;}二 用递归的方式,需要给定逆序的区间,调用方法:Reverse(s, 0, strlen(s)) ;

// 对字符串s在区间left和right之间进行逆序,递归法char *Reverse( char *s, int left, int right ){ if(left >= right) return s ; char t = s[left] ; s[left] = s[right] ; s[right] = t ; Reverse(s, left + 1, right - 1) ;}三 非递归法,同样指定逆序区间,和方法一没有本质区别,一个使用指针,一个使用下标。

// 对字符串str在区间left和right之间进行逆序char *Reverse( char *s, int left, int right ){ while( left < right ) { char t = s[left] ; s[left++] = s[right] ; s[right--] = t ; } return s ;}
天堂妹儿
2011-11-05 · TA获得超过687个赞
知道小有建树答主
回答量:386
采纳率:0%
帮助的人:275万
展开全部
函数名: strrev
功 能: 串倒转
用 法: char *strrev(char *str);
程序例:
#include <string.h>
#include <stdio.h>
int main(void)
{
char forward[] = "string";
printf("Before strrev(): %s\n", forward);
strrev(forward);
printf("After strrev(): %s\n", forward);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
淦海瑶s1
2011-11-05 · TA获得超过3646个赞
知道大有可为答主
回答量:3341
采纳率:100%
帮助的人:734万
展开全部
int i;
char a[];
for(i=strlen(a[]),i>=0;i--)
printf("%c",a[i]);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式