字符串翻转?

gu_jingzhou 2012-09-05 12:52:36
void Revese(char *str){  

char *start=str,*end=str,*ptr=str; //开头,结尾,中间指针
while (*ptr++!='\0')
{
if (*ptr==' '||*ptr=='\0') //找到一个单词
{
end=ptr-1; //end指向单词末尾
while (start<end)
swap(*start++,*end--); //把单词的字母逆置
start=end=ptr+1; //指向下一个单词开头
}
}

start=str,end=ptr-2;//start指向字符串开头,end指向字符串末尾
while (start<end)
{
swap(*start++,*end--);
}
}
end=ptr-1; //end指向单词末尾 ???是什么意思,start,end ptr 首先都指向字符串首地址??-1 应该是向前移动一个单位,怎么会指向单词末尾???????
...全文
208 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jimette 2013-03-15
  • 打赏
  • 举报
回复
您好, 由于您长时间不结贴,上一次答复已超一个月并且已有最佳答案,本人帮你结贴。 若是觉得答案不嘉,请放在本版的疑难杂症帖链接: http://bbs.csdn.net/topics/390351579。 如果您有什么意见,请您联系我。
zjs100901 2012-09-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

不是有现成的函数reverse()吗?
[/Quote]
人家要hello world变成world hello
还有人要abc\r\ndef变成fed\r\ncba
还有人要您好好您
Eleven 2012-09-05
  • 打赏
  • 举报
回复
不是有现成的函数reverse()吗?
快乐鹦鹉 2012-09-05
  • 打赏
  • 举报
回复
end指向末尾,start指向开头,这样才能交换啊。

start,end ptr 首先都指向字符串首地址==开始扫描前,肯定都指向开头啊,随着交换的进行,这些指针都在改变位置的。
zjs100901 2012-09-05
  • 打赏
  • 举报
回复
void Revese(char *str){  
char *start=str,*end=str,*ptr=str; //开头,结尾,中间指针
while (*ptr++!='\0')
{
if (*ptr==' '||*ptr=='\0') //找到一个单词
{
end=ptr-1; //end指向单词末尾
while (start<end)
swap(*start++,*end--); //把单词的字母逆置
start=end=ptr+1; //指向下一个单词开头
}
}

start=str,end=ptr-2;//start指向字符串开头,end指向字符串末尾
while (start<end)
{
swap(*start++,*end--);
}
}

int main()
{
char str[] = "hello world";
Revese( str );
cout << str;
return 0;
}


当执行到“end=ptr-1; //end指向单词末尾 ”这一行时,ptr指向字符串中的空格。ptr-1指向它前面的一个字符,例子中即字母o。你说o是不是单词末尾啊?[Quote=引用楼主的发问:]
start,end ptr 首先都指向字符串首地址??
[/Quote]
初始化嘛,后来不是通过while (*ptr++!='\0')等语句重新赋值了吗?
itelly 2012-09-05
  • 打赏
  • 举报
回复
刚刚死看了一会,竟然看懂了
gu_jingzhou 2012-09-05
  • 打赏
  • 举报
回复

void swap ();怎么写??
gu_jingzhou 2012-09-05
  • 打赏
  • 举报
回复
swap(*start++,*end--)
怎么写????

void swap(char start2,char end2){
char a;
a=start2;
start2=end2;
end2=a;

}可以这么写不???

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧