// 将 you are from shanghai 倒序成 shanghai from are you
#include <stdio.h>
int strLen(char *pStr)
{
if (pStr == NULL)
return -1;
int len = 0;
while (*(pStr++))
len++;
return len;
}
void reverse(char *pStr)
{
int left = 0;
int right = strLen(pStr) - 1;
while (left < right)
{
char tmp = pStr[left];
pStr[left++] = pStr[right];
pStr[right--] = tmp;
}
}
int main()
{
char str[] = "You are from Shanghai";
// 1、整个句子逆序
reverse(str);
printf ("%s\n", str);
// 2、将每一个单词逆序
char *p1 = str;
char *p2 = str;
while (*p2)
{
if (*p2 == ' ')
{
*p2 = '\0';
reverse(p1);
*p2 = ' ';
p1 = p2 + 1;
}
p2++;
}
printf ("%s\n",str);
// 3、将最后一个单词逆序
reverse(p1);
printf ("%s\n", str);
return 0;
}
运行结果: