Ciao, visto che è passato un po di tempo da quando hai postato, non so se hai risolto o sei ancora in cerca di una soluzione
Comunque trovo l'esercizio interessante e quando avrò un po di tempo da perdere proverò a risolverlo.
Provo a darti qualche suggerimento che forse ti ritornerà utile, avendo a che fare con altri linguaggi più recenti, si possono avere a disposizione funzioni o metodi che agevolano molto la risoluzione di un problema come questo, rendendo la risoluzione alquanto banale, per citare indexof() di c# o analogo in altri linguaggi.
Per la risoluzione del problema io punterei alla creazione di funzioni che non sono presenti nella libreria standar del C. come appunto indexof() che restituisce la prima occorrenza di una "striga".
Quello che dovrai fare nella funzione, è scorrere l'array finché non trovi il carattere iniziale, poi controllare da quel punto che i caratteri successivi siano uguali a quelli della parola cercata, se si restituire l'indice del primo carattere.
Seconda funzione che ti serve è SostituisciCompatta() che, ricevendo come parametri l'indice e la "parola di sostituzione" sostituisce dall'indice ai caratteri successivi, con la parola ricevuta come parametro, poi compatta l'array .
Io risolverei cercando di creare queste due funzioni, poi avendole a disposizione sarebbe molto facile costruire un main() che risolva il problema.