#include <stdio.h>
#include <stdlib.h>
void revertWord(char * p, char* p1)
{
char c;
for (; p < p1; p++, p1--)
{
c = *p;
*p = *p1;
*p1 = c;
}
}
void revert(char *p)
{
char * p1;
while (*p && *p == ' ')
p++;
if (!*p)
return;
p1 = p;
while (*p && *p != ' ')
p++;
revertWord(p1, p - 1);
revert(p);
}
void myrevert(char * word)
{
if (!word)
return;
char * ptmp = word;
int index = 0;
while ( *(ptmp++) != '\0')
index++;
index--;
for (int i = 0; i < index / 2; i++)
{
char c = ' ';
c = *(word + i);
*(word +i) = *(word + index - i);
*(word + index - i) = c;
}
}
void myrevertex(char * word, int index)
{
if (!word)
return;
char * ptmp = word;
index--;
for (int i = 0; i < index / 2; i++)
{
char c = ' ';
c = *(word + i);
*(word + i) = *(word + index - i);
*(word + index - i) = c;
}
}
void mywordrevert(char * strdata)
{
if (!strdata)
return;
int i = 0;
char * pword = strdata;
char * pleftdata = strdata;
while ( *(pword) != '\0')
{
i++;
if ( *pword == ' ')
{
myrevertex(pleftdata, i-1);
pleftdata = pleftdata + i;
pword = pleftdata;
i = 0;
}
else
{
pword++;
}
}
myrevertex(pleftdata, i);
}
void revert_word(char* pdatatop, char * pdataend)
{
for (;pdatatop < pdataend; *pdatatop++, *pdataend--)
{
char temp = *pdataend;
*pdataend = *pdatatop;
*pdatatop = temp;
}
}
void revert__(char * pdata)
{
while (*pdata && *pdata == ' ')
pdata++;
if (!*pdata)
return;
char * pbeforedata = pdata;
while (*pdata && *pdata != ' ')
pdata++;
revert_word(pbeforedata, pdata-1);
revert__(pdata);
}
int main()
{
char line[] = " abc hello world ";
revert__(line);
printf("%s \n", line);
return 0;
}