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 //
|  1  | ...  97  |  98  |  99  |  100  |  101  |  102  |  103  |  104  |  105  | ...  108  |