16,473
社区成员
发帖
与我相关
我的任务
分享
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 应该是向前移动一个单位,怎么会指向单词末尾???????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;
}