EOF lendo C / C ++

Estou usando o NetBeans MinGW para compilar programas c simples (sou novo nisso). Meu problema é que eu tenho esse código simples

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv) {
    int c,i=0;
    while((c=getchar())!=EOF){
        i++;
    }
    printf("%d",i);
    return 0;
}

e quando tento finalizar a entrada assim:

olá ^ Z [enter]

não faz isso, preciso entrar novamente

^ Z [enter]

para terminar.

Eu gostaria que você me dissesse por que isso acontec

Desde já, obrigad

questionAnswers(2)

yourAnswerToTheQuestion