Salida del progtwig que cuenta espacios en blanco, tabs y nuevas líneas.

Mi pregunta se refiere al siguiente progtwig:

#include // program counts blanks, tabs, and new lines main() { int c; int blank, tab, newl; while((c = getchar()) != EOF) { } if (c == ' ') { ++blank; } if (c == '\t') { ++tab; } if (c == '\n') { ++newl; } printf("There are %d blank lines, %d tabs, and %d new lines\n", blank, tab, newl); } 

Cuando presiono CTRL + Z, mi salida es: Hay 8 líneas en blanco, 56 tabs, 2147344384 líneas nuevas

1) ¿Por qué es esto el resultado de los progtwigs? 2) ¿De dónde obtiene getchar () esta entrada? 3) También cuando ejecuto el progtwig en la consola MinGw, ¿por qué cuando presiono ENTER el progtwig se mueve continuamente a la siguiente línea? Solo después de presionar CTRL + Z obtengo la salida mencionada anteriormente.

Gracias.

Versión más pequeña, más simple:

 int main() { int c; int count[255] = {0}; while((c = getchar()) != EOF) { count[c]++; } printf("There are %d blank lines, %d tabs, and %d new lines\n", count[' '], count['\t'], count['\n']); return 0; } 

Solo inicializa las variables

 #include // program counts blanks, tabs, and new lines int main() { int c; int blank, tab, newl; blank = tab = newl = 0; while((c = getchar()) != EOF) { // } if (c == ' ') { this is wong if (c == ' ') { ++blank; } else if (c == '\t') { // add else, you don't need to check this if the previous was true. ++tab; } else if (c == '\n') { ++newl; } } printf("There are %d blank lines, %d tabs, and %d new lines\n", blank, tab, newl); return 0; }