입력받은 행, 단어, 문자의 개수 세는 프로그램
빈칸, tab, 행바꿈문자(\n)가 나오면 한 단어가 끝났다고 본다.
빈칸, 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 );
}
#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
- 손가락귀신
정신 못차리면, 벌 받는다.
,