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