Added ex1_10-5.c, an implementation of an example wordcount program on pages 21/22 of KNR C, purely as an exercise to see if I could do it more efficiently than the book. This resulted in a binary that was, 138 lines long as disassembled.
This commit is contained in:
parent
d3ce211f14
commit
313e4aaa3b
1 changed files with 26 additions and 0 deletions
26
KNR C/ex1_10-5.c
Normal file
26
KNR C/ex1_10-5.c
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
#include <stdio.h>
|
||||
|
||||
/*Rewriting the wc program from pge 21/22 of KNR C, because the book does it in a way that I think is silly, and because I can.*/
|
||||
|
||||
int nl, nw, nc, state = 0;
|
||||
|
||||
#define IN 1 /*State when selected character is in a word*/
|
||||
#define OUT 0 /*State when selected character is a newline, space, or tab (outside a word)*/
|
||||
|
||||
int main(){
|
||||
|
||||
|
||||
for(int a = getchar(); a != EOF; a = getchar()){
|
||||
++nc;
|
||||
if(a == '\t' || a == ' ' || a == '\n'){
|
||||
state = OUT;
|
||||
if (a == '\n')
|
||||
++nl;
|
||||
} else {
|
||||
state = IN;
|
||||
++nw;
|
||||
}
|
||||
}
|
||||
printf("%d %d %d\n", nl, nw, nc);
|
||||
return 0;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue