입력받은 행, 단어, 문자의 개수 세는 프로그램

빈칸, tab, 행바꿈문자(\n)가 나오면 한 단어가 끝났다고 본다.

#include <stdio.h>

#define IN 1  // inside a word
#define OUT 0 // outside a word

/* count lines, words, and characters in input */
main()
{
  int c, nl, nw, nc, state;

  state = OUT;
  nl = nw = nc = 0;
  while( ( c = getchar() ) != EOF )
  {
    ++nc;  // increase character
    if( c == '\n')
      ++nl;  // increase line
    if( c == ' ' || c == '\n' || c == '\t' )
      state = OUT;
    else if( state == OUT ) {
      state = IN;
      ++ nw;  // increase word
    }
  }
  printf( "%d %d %d\n", nl, nw, nc );
}

  • 문자를 입력받을 때마다 행인지 단어인지 문자인지 체크를 한다.
  • 입력이 들어올 때마다 문자 개수 변수인 nc는 1씩 증가한다.
  • enter(\n)이 입력되면 행 개수 변수인 nl은 1씩 증가한다.
  • 빈칸, tab, 행바꿈문자가 나오면 그 다음 입력문자 체크를 하여 단어 개수 변수인 nw는 1씩 증가한다.
  • state 값을 1과 0이 아닌 상수 IN과 OUT 상수로 나타낸 이유는 나중에 프로그램이 복잡해지면 해석이 쉬워지기 때문이다.

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,