codice:
  if(c==' ' || c=='\t' || c=='\n')
            ++nw;
esiste una macro apposita (che è standard! ) definita in ctype.h:

codice:
  if(isspace(c))
            ++nw;

perché usi dei valori double? non sono interi?