#include #define IN 1 /*State when selected character is within a word*/ #define OUT 0 /*State when selected character is any kind of whitespace*/ int main(){ int charCount[10]; /*Array for storing char lengths*/ int last, lCount, state, i; /*last stores last character, or 0 at init. lCount increments every time the main for loop encounters a non-newline/whitespace character and then resets when one is encountered after commiting its value to charCount.*/ /*Begin array initialization*/ for(i = 0; i < 10; ++i){ charCount[i] = 0; } /*End array init*/ last = lCount = 0; for(int a = getchar(); a != EOF; a = getchar()){ if(a == '\t' || a == ' ' || a == '\n'){ /*Check if current char is WS. If so, set state to OUT and check if the last character was not. If it was not, then we are exiting a word, and so comitting lCount to charCount.*/ state = OUT; if (last != '\t' && last != ' ' && last != '\n'){ /*True on word exit only.*/ ++charCount[lCount-'0']; lCount = 0; } } else { state = IN; ++lCount; /*Increment lCount when encountering a non-WS character.*/ } last = a; } printf("Word letter count composition:\n1 2 3 4 5 6 7 8 9 10\n"); for (i = 0; i < 10; ++i) printf("%d ", charCount[i]); return 0; }