#include <stdio.h>
#define IN 1
#define OUT 0
int main()
{
   int nl,nc,nw,state,c;
   nl=nw=nc=0;
   state=OUT;
   while( (c=getchar()) != EOF )
   {
      ++nc;
      if(c=='\n')
          ++nl;
      if(c==' '||c=='\t'||c=='\n')
      {
          state=OUT;
      }
      else if(state==OUT)
      {
        state=IN;
        ++nw;
      }
    }
}
printf("%d\n%d\n%d\n",nw,nl,nc);
}
I entered 1ctrl+z(enter)
ctrl+z(enter)

Please help me to explain why it didn't work for the first EOF i.e. when it first encountered ctrl+z. And how can one explain nl, nw and nc for this input? Thnx!