인프런 커뮤니티 질문&답변

Jang YouChang님의 프로필 이미지
Jang YouChang

작성한 질문수

홍정모의 따라하며 배우는 C언어

7.8 단어 세기 예제

이해가안됩니다

작성

·

139

0

char c;

int chars = 0;

int words = 0;

int lines = 0;

bool word_flag = false;

bool line_flag = false;

printf("단어를 입력하세요:\n");

while ((c = getchar()) != PERIOD)

{

if (!isspace(c))

chars++;

if (!isspace(c) && !line_flag)

{

lines++;

line_flag = true;

}

if (c == '\n')

line_flag = false;

if (!isspace(c) && !word_flag)

{

words++;

word_flag = true;

}

if (isspace(c))

word_flag = false;

}

printf("글자수 :%d 단어수 :%d 줄수 :%d\n", chars, words, lines);

여기서요 첫번째 두번째부분에 글자수랑 줄바꿈수 세는부분

if (!isspace(c))

chars++;

if (!isspace(c) && !line_flag)

{

lines++;

line_flag = true;

}

여기서 만약에 글자를 입력할때 a를 입력한다고하면

처음에 if (!isspace(c))

chars++; 이게 만족되니까 chars가 1증가하구

그다음에if (!isspace(c) && !line_flag) 

여기서요 ! isspace(c)는 true이고 뒤에 지금 line_flag가 false로 초기화되어있으니 ! 붙으면 true니까 전체가 true잖아요

그러면 안에있는lines++;

line_flag = true; 이게 실행되어서 lines 즉 줄수가 1증가해야되는거아닌가요?? 즉 처음에 공백아닌 문자 입력하면 a가되었는 b가되었든 글자수도 1증가하는데 줄수도 lines도 1증가하는거아닌가요?

답변 1

0

질문자님께서 생각하신대로 그렇게 잘 작동합니다..! 

Jang YouChang님의 프로필 이미지
Jang YouChang

작성한 질문수

질문하기