char* Reverse(char* start, char* end)
{
if (start == NULL || *start == '\0' || end == NULL || *end == '\0')
return NULL;
char* p = start; // 棣栧湴鍧
char ch;
while(start < end)
{
ch = *start;
*start++ = *end;
*end-- = ch;
}
return p;
}
char* ReverseEveryWord(char* p)
{
if (p == NULL || *p == '\0')
return NULL;
char* left= p;
char* right = p;
while(*right)
{
if (*right == ' ' || *right == '\0')
{
Reverse(left,right-1);
left = right+1;
}
right++;
}
// Revere last word
Reverse(left, right-1);
return p;
}
char* ReverseWholeString(char* p)
{
if (p == NULL || *p == '\0')
return NULL;
char* start = p;
while(*p++)
;
p -= 2; // 鏈鍚庝竴涓瓧絎︾殑鍦板潃
return Reverse(start, p);
}
int _tmain(int argc, _TCHAR* argv[])
{
char str[] = "This is a dog";
ReverseWholeString(str);
ReverseEveryWord(str);
return 0;
}