A contagem não está certa: o que deveria ser contado é a quantidade de caracteres de espaço em branco:
' ' space (SPC)
'\t' horizontal tab (TAB)
'\n' newline (LF)
'\v' vertical tab (VT)
'\f' feed (FF)
'\r' carriage return (CR)
O autor poderia usar isspace() da ctype, que verifica se o caractere passado como argumento é um caractere de espaço em branco e retorna um valor diferente de 0 caso seja e 0 caso não seja. A verificação poderia ser manual também, com uma string constante de preferência com todos caracteres de espaço em branco e um loop, assim como fez pra contar as vogais.