Skip to main content

1.5.4 단어 갯수 세기

실습 전 이론

이번에는 단어 갯수 세기 프로그램이다.

하나의 단어를 세는 기준은 빈칸, tab, 혹은 개행이 나오면 한 단어가 끝났다고 생각한다.

이번 프로그램에선 || 와 상수 지정을 사용하여 행, 단어, 문자의 갯수를 센다.

실습

#include <stdio.h>

#define IN 1
#define OUT 0

int 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);
}

변수 nl, nw, nc 는 각각 line, word, count 라고 보면된다.

state라는 상태를 표시하는 변수를 통해 단어를 끝마치는 문자가 식별될 경우 state를 out 으로 만들고 단어 갯수(nw)를 1 올린다음,

다시 state를 IN으로 바꾼다.

image.png

이런식으로 문장을 입력하고 EOF를 입력하면 개행, 단어 수 , 문자갯수를 출력해준다.

if 문에서 || 는 or 연산으로 사용되며 if(a || b || c) 일경우 a,b,c 중 하나라도 참일 경우 해당 if 문의 몸체 부분 코드가 실행된다.

같은 원리로 && 는 and 연산자로써 사용된다.


실습 후 이론