翻转句子顺序
#include <iostream>
using namespace std;
void reverse(char *a, char *b)
{
while (a < b)
{
char temp;
temp = *a;
*a = *b;
*b = temp;
a++;
b--;
}
}
void fun(char *str)
{
char *p =str + strlen(str) - 1;
reverse(str, p);
cout << str << endl;
char *pbegin = str;
char *pend = str;
while (*pbegin != NULL)
{
if (*pbegin == ' ')//pbegin为前指针,pend为后指针,当前指针遇到空格,两个指针一起前进(pend更接近‘\0’)
{
pbegin++;
pend++;
}
else if (*pend == ' ' || *pend == '\0')//后指针遇到空格,反转单词,回到空格,并且两个指针一起指向空格
{
reverse(pbegin, --pend);
pbegin = ++pend;
}
else
pend++;
}
cout << str << endl;
}
int main()
{
char p[12] = "i am a boy";
fun(p);
system("pause");
return 0;
}