EOF按两次才结束输出

#include <stdio.h>

int main() {
    int n, m, i;
    n = m = i = 0;
    char a;

    do {
        a = getchar();
        if (a == 9 )
            m++;//制表符ASCLL
        if (a == 32)
            n++;//空格符ASCLL
        if (a == 10)
            i++;//换行符ASCLL
    } while (a != EOF); //Crtl+z结束输入

    //EOF要按两次才输出
    printf("%d %d %d", n, m, i);
    return 0;
}

照理说只要我按下ctrl+Z就应该结束输入了,但为什么实际上在控制台我要按两下才结束输入