#include <stdio.h>
void reverse_word(char *begin, char *end) {
char tmp;
while (begin < end) {
tmp = *begin;
*begin++ = *end;
*end-- = tmp;
}
}
void reverse_words_order(char *s) {
char *word_start = s;
char *p = s;
while (*p) {
p++;
if (*p == '\0') {
reverse_word(word_start, p - 1);
}
else if (*p == ' ') {
reverse_word(word_start, p - 1);
word_start = p + 1;
}
printf("word_begin = %s -- p = %s -- s = %s\n", word_start, p, s);
}
reverse_word(s, p - 1);
}
int main()
{
char s[] = "c c++ vb java python";
reverse_words_order(s);
puts(s);
return 0;
}
/*
run:
word_begin = c++ vb java python -- p = c++ vb java python -- s = c c++ vb java python
word_begin = c++ vb java python -- p = c++ vb java python -- s = c c++ vb java python
word_begin = c++ vb java python -- p = ++ vb java python -- s = c c++ vb java python
word_begin = c++ vb java python -- p = + vb java python -- s = c c++ vb java python
word_begin = vb java python -- p = vb java python -- s = c ++c vb java python
word_begin = vb java python -- p = vb java python -- s = c ++c vb java python
word_begin = vb java python -- p = b java python -- s = c ++c vb java python
word_begin = java python -- p = java python -- s = c ++c bv java python
word_begin = java python -- p = java python -- s = c ++c bv java python
word_begin = java python -- p = ava python -- s = c ++c bv java python
word_begin = java python -- p = va python -- s = c ++c bv java python
word_begin = java python -- p = a python -- s = c ++c bv java python
word_begin = python -- p = python -- s = c ++c bv avaj python
word_begin = python -- p = python -- s = c ++c bv avaj python
word_begin = python -- p = ython -- s = c ++c bv avaj python
word_begin = python -- p = thon -- s = c ++c bv avaj python
word_begin = python -- p = hon -- s = c ++c bv avaj python
word_begin = python -- p = on -- s = c ++c bv avaj python
word_begin = python -- p = n -- s = c ++c bv avaj python
word_begin = nohtyp -- p = -- s = c ++c bv avaj nohtyp
python java vb c++ c
*/