Подсчет символов, строк и слов

Программа считает количество введенных пользователем символов, строк и слов. Чтобы программа корректно закончила работу и правильно посчитала, после набора строк надо перейти на новую строку, после чего нажать Ctrl + D (по крайней мере в терминале Linux).

#include <stdio.h>
 
int main() {
    char ch, flag=-1;
    unsigned c=0; // символы
    unsigned w=0; // слова
    unsigned n=0; // строки
 
    while ((ch = getchar()) != EOF) {
        if (ch == '\n') 
            n++; 
        else 
            c++; 
 
        if (ch == ' ' || ch == '\n') 
            flag = -1; 
        else if (flag == -1) {
            flag = 1;
            w++;
        }
    }
 
    printf("Символы: %u\n", c);
    printf("  Слова: %u\n", w);
    printf(" Строки: %u\n", n);
}
one two
three
four
Символы: 16
  Слова: 4
 Строки: 3

Решение задач на языке C