Полагаю, input
- это правильно распределенная строка C с нулевым символом в конце.
Вы сканируете (внутри цикла) по одному символу за раз;Точно так же вы можете изменять один символ за раз.
Таким образом, вам нужна дополнительная переменная, в которой вы храните, если проанализированное слово должно быть преобразовано в последовательность звездочек.
Когда вы встречаете заглавную буквув начале слова переменная установлена в true.
Когда вы сталкиваетесь с концом текущего слова (пробел), вы сбрасываете переменную в false.
Наконец, вы изменяете (илинет) текущий символ соответственно.
Смотрите комментарии в коде
// you need a variable to record if the current word
// should be converted to a sequence of '*'
bool toAsterisk = false;
// sentence scanning loop (one character at a time)
// note that index starts at 0 (not 1)
for (i = 0; input[i] != '\0'; i++)
{
// check if the current word should be converted to asterisks
if( isupper( input[i] ) && toAsterisk == false )
{
toAsterisk = true;
}
// check if you rwach the end of the current word
if( input[i] == ' ' )
{
toAsterisk = true;
}
// convert to asterisks?
if( toAsterisk )
{
input[ i ] = '*';
}
}