e.g "university of electronic science and technology of china“ 单词逆置为”china of technology and science electronic of university“
void func(const char * pStr)
{
char *p1 = const_cast<char *> (pStr);
int iLen = strlen(p1);
char *p2 = p1 + iLen - 1; //指向最后一个字符
//将整个字符串进行逆置
char temp;
while (p1 < p2)
{
temp = *p1;
*p1 = *p2;
*p2 = temp;
++p1;
--p2;
}
//对每个单词逆置(复原)
p1 = const_cast<char *> (pStr);
int iCount = 0;
char * pStart;
char * pEnd;
while (*p1 != '\0')
{
if (*p1 == ' ') //遇到空格
{
pStart = p1 - iCount; //指向单词首位
pEnd = p1 - 1; //指向单词末位
while (pStart < pEnd) //逆置每个单词
{
temp = *pStart;
*pStart = *pEnd;
*pEnd = temp;
++pStart;
--pEnd;
}
iCount = 0; //计数清零
}
else
{
++iCount; //计数
}
++p1;
}
//处理最后一个单词
pStart = p1 - iCount; //指向单词首位
pEnd = p1 - 1; //指向单词末位
while (pStart < pEnd) //逆置每个单词
{
temp = *pStart;
*pStart = *pEnd;
*pEnd = temp;
++pStart;
--pEnd;
}
}