Строковые данные. Хелпаните пж

Задать строку.Найти длину самого короткого слова и заменить его сочетанием символов *. Смог сделать так чтоб находило минимальное слово. А заменить не выходит Понимаю, что надо как-то запомнить начало и конец слова. типо так: k = i; n = i - min; но как именно

#include "pch.h"
#include "math.h"
#include "conio.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "locale.h"**

int main()
{
    setlocale(LC_ALL, "Russian");
    char string[] = "Заметался пожар голубой,позабылись родимые дали";
    printf("Cтрока: %s", string);
    int min = 100;
    int length;
    int counter = 0;
    length = strlen(string);
    printf("\nДлинна строки: %d \n", length);
    for (int i = 0; i < length + 1; i++) {
            if (string[i] != ' ' && string[i] != ',' && string[i] != '\0') {
                counter++;
            }
            else {
                if (counter < min) min = counter;   
                counter = 0;
            }
    }
    printf("Минимальное слово %d \n", min);
}

Ответы (2 шт):

Автор решения: MBo

В момент определения min известна длина короткого слова, тут же нужно запомнить и позицию его конца.

if (counter < min) {
    min = counter; 
    imin = i;
}

После прохождения строки скопировать кусок длиной imin-min, потом звёздочку, потом остаток строки

→ Ссылка
Автор решения: MikitaS

Я попробовал написать решение вашей задачи, немного дополнив и переписав ваш код. Необходимо находя самое короткое слово каждый раз запоминать позицию его начала вместе с размером, а потом посимвольно заменить

#include "stdio.h"
#include "string.h"
#include "locale.h"

int main()
{
    setlocale(LC_ALL, "Russian");

    char string[] = "Заметался пожар голубой,позабылись родимые дали\0";
    int length = strlen(string);
    int counter = 0;
    int mincounter = 100, minposition = -1;

    printf("Cтрока: %s\n", string);
    printf("Длинна строки: %d \n", length);

    int i = 0;
    for (; i < length + 1; i++)
    {
        if (string[i] != ' ' && string[i] != ',' && string[i] != '\0')
        {
            counter++;
        }
        else
        {
            if (counter < mincounter)
            {
                mincounter = counter;
                minposition = i - counter;
            }

            counter = 0;
        }
    }

    for(i = 0; i < mincounter; ++i)
    {
        string[minposition + i] = '*';
    }

    printf("Минимальное слово %d\n", mincounter);
    printf("Результат: >>%s<<\n", string);

    return 0;
}

→ Ссылка