
 Gracias por el ejercicio... extrañamente a mi usualmente se me ocurren cosas que tienen que ver con números  

. He aquí el código que hice:
Código:
 #include <stdio.h>
#include <string.h>
main() {
	char *cadena;
	int i=0, j, k;
	gets(cadena);
	i= strlen(cadena);
	cadena[i]=' ';
	while(i > 0) {
		k= i;
		do {
			i--;
		} while(cadena[i]!=' ' && i>=0);
		for (j=i+1; j<=k; j++) {
			printf("%c", cadena[j]);
		}
	}
return 0;
}
  Para que vean que tan principiante soy... ni sabia que scanf no me leia los espacios  

. Pero ya sabia de gets()...  

 Veamos... tengo tres variables i, j y k ... i será como un auxiliar; j y ka las utlizo para imprimir... busco en la cadena un espacio e imprimo desde el carácter posterior al el espacio hasta el espacio siguiente cuya posición es k. ... No hay mayor ciencia... Agrego un espacio a el final para que no me imprima dos palabras seguidas... para que no me haga esto -> [Esta es la cadena] => [cadenala es Esta ] ... ahora bien: preguntas que para eso estamos: 
1) Utilize bucles por mi desconocimiento de funciones... pero apostaria que hay algo que me busque una carácter en una cadena y me regrese su posición ¿cierto??... ó algo como 'explode()' ó 'split()'???... Creo con una función se podria simplificar esto. 
2) Se que hay ... cadenas reservadas para referirse a ciertos "carácteres especiales" ... como por ejemplo '\r' para un [return], '\n' para un salto de línea... y creia que '\x0' era para un espacio en blanco... pero no me funcionó... Bueno pués, concretamente ¿cuál es para el espacio en blanco?... y en general ¿cuáles son todos estos tipos de cadenas reservadas? 
... Por el momento es eso... claro, comentarios, sugerencias y otros problemas son bien resibidos.  
Saludos!