Write a function char* find_word(char* start) where start is (a pointer to) the first char of the string and the return value is (a pointer to) the last one (the first whitespace). When *start == 0, return start.
Now put this function in a loop where, while the returned value is not equal to the argument, add the string between the argument and return value to the result string (starting from its end).
Of course, you don't really need a separate function, but I suppose it is easier to think when it is.
I think it would be slightly simpler to implement if find_word's argument would be the end of a word and it would find the beginning.
I do. That wouldn't be of much use to anyone. You'll learn more if you write it yourself. What problems are you having? Approach the problem step by step. Are you able to write the find_word function?
Another approach to the problem (hamsterman has a good one too) is to take each "word" (series of non-space chars) and put it into one element of an array or vector (vector is better if you don't know how many words there will be in the line) and then just output each element starting from the end backwards.
EDIT: forgot to specify: a vector of strings