Советую не пытаться сделать как можно меньше строк и завести побольше переменных, тогда наверняка будет проще разобраться )
И чтение текста чот сложное, он точно должен быть многострочным?
Надо слова сначала получить, с помощью того же strtok например.
Как тут в примере strtok - C++ Reference
Только с ним вроде не получится восстановить разделители (если их много, а не один пробел) при создании новой строки (с помощью strcpy) и исходную строку он тоже портит.
This function is destructive: it writes the ‘\0’ characters in the elements of the string
Так что лучше просто в цикле идти по символам, смотреть разделитель или нет, реагировать на начало (не разделитель после разделителя) и конец слова и т.д.
Конечный автомат можно нарисовать )