From 4b03274352943d7998f87394023d01427b0055a0 Mon Sep 17 00:00:00 2001 From: SakurajimaShida Date: Tue, 19 Aug 2025 13:58:39 -0700 Subject: [PATCH] Skeleton prototype for exercise 1-13. --- KNR C/ex1_13.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 KNR C/ex1_13.c diff --git a/KNR C/ex1_13.c b/KNR C/ex1_13.c new file mode 100644 index 0000000..6cc80ef --- /dev/null +++ b/KNR C/ex1_13.c @@ -0,0 +1,41 @@ +#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; + }