자격증과 세미나, 프로그램 이야기를 주저없이 써봅니다.

Since 2008. 10.

IT 자격증/코딩능력마스터 및 C언어

C언어 - 단어 수 세기

럭키맨 운수 2009. 8. 25. 12:22

키보드로 입력한 영어 문장 속의 단어(스페이스나 피리오드로 구분된 말의 덩어리) 수를 세는 프로그램입니다. 스페이스가 여러 개 연속적으로 존재할 경우도 고려해야 하며, [Enter]키만 입력하면 프로그램이 종료되도록 작성합니다.

 

#include <stdio.h>
{
 char c = '\0';  /* 키보드에서 입력한 한 글자 */
 char firstletter; /* 맨 처음 글자를 담아둡니다 */
 int wordnum;  /* 단어의 문자 수 */
 int word_in;  /* 단어에 들어가면 true */

 while(1)  /* 처리를 단순화하기 위해, 일부러 무한 루프를 만듬 */
 {
  wordnum = 0;
  word_in = 1;
  firstletter = '\0';
  printf("문자열을 입력하세요 : ");
  while(1)
  {
   c = getchar();   /* [Enter] 키를 누르면, */
   if(c == '\n') {   /* 안쪽 루프를 빠져나옴 */
    if(word_in)  /* (단어가 끝이 아니었다면 */
     wordnum++ ; /* 단어 수에 추가함 */
    break;
   }
   firstletter = c;  /* 단어의 바로 다음 문자가 */
   if(c == ' ' || c == '.') { /* 구분문자라면, */
    if(word_in)  /* 단어의 개수를 */
    {   /* 카운트함 */
     wordnum++ ;
     word_in = 0;
    }
   }
   else
    word_in = 1;
  }
  if(firstletter == '\0')   /* 아무것도 입력하지 않으면 */
   break;    /* 바깥 루프를 빠져나옴 */
  printf("단어 수 : %d\n", wordnum);
 }
}