word counting (wc)
단어를 새는 프로그램.
유닉스 명령어로 wc를 구현한 프로그램.
#include <stdio.h>
#define IN 1
#define OUT 0
main()
{
int c, nl, nw, nc, state;
state = OUT;
nl = nw = nc = 0;
while ((c = getchar()) != EOF) {
++nc;
if (c == '\n')
++nl;
if (c == ' ' || c == '\n' || c == '\t')
state = OUT;
else if (state == OUT) {
state = IN;
++nw;
}
}
printf("%d %d %d\n", nl, nw, nc);
}
라인수 계산할때 자주사용하는 wc가 이렇게 간단하게 되어 있었다니...
OUT과 IN 이 헷갈릴 수 있을 것 같다.
일단 OUT부터 선언한다. 그래야 마지막 if에서 IN으로 바뀌고 nw(new word)가 ++될 수 있다.
이후 단어의 끝을 나타내는 ' ', \n, \t의 경우 OUT으로 변경된다.
Tag // c