Керниган, Ритчи. Задача: Напишите программу, печатающую гистограммы длин вводимых слов

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

#define OUT 0  // внутри слова
#define IN 1   // вне слова
#define WORDNUM 10  // номер слова

int main()
{
    int sym, state, i, j;
    state = OUT;
    int wlengths[WORDNUM]; // длины слов
    for (i = 0;i < WORDNUM;++i)
        wlengths[i] = 0;
    while ((sym = getchar()) != EOF)
    {
        for (i = 0; i < WORDNUM;)
        {
            if ((sym == ' ' || sym == '\n' || sym == '\t') && (state == IN))
            {
                state = OUT;
                ++i;
            }
            else if (sym == ' ' || sym == '\n' || sym == '\t');
            else 
            {
                state = IN;
                ++wlengths[i];
            }
        }
    }
    for (i = 0;i < WORDNUM;++i)
    {
        printf("|%d|", i);
        for (j = wlengths[i]; j > 0; --j)
        {
            printf("*");
        }
        printf("\n");
    }
}

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