To help you out without giving too much away, I think your algorithm is too complicated. Instead of reversing individual words and then reversing the whole string, consider splitting the string into an array of strings with space as a delimiter. Then simply reverse the array.
The way to do this in C is a little bit odd; since you already use char arrays as strings, you actually need to make an array of char arrays. For example:
char a[] = "i like this program very much";
actually means
a = ['i', ' ', 'l', 'i', 'k', 'e', ' ', ... , 'c', 'h']
So, you want to create an array of char arrays so it now looks like this:
new_array = [['i'], ['l', 'i', 'k', 'e'], ... ['m', 'u', 'c', 'h']]
Then all you need to do is print the new array backwards, and you've got the output you want!
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…