scanf에 대해서

dio8272의 이미지

c언어를 막 배우기 시작한 입문자인데요 책에서 나온 예제에서 궁금한점이 생겨서 질문합니다.

#include

int main(void)
{
char letter;

while(1)
{
printf("소문자를 입력해주세요:");
scanf(" %c",&letter);

if (letter == '0')
break;

if (letter<'a' || letter > 'z')
continue;

letter -= 32

printf("변환된 대문자는 %c입니다.\n",letter);

}

return 0;

}

이란 예제에서 scanf를 보면 scanf(" %c",&letter); 인데요 %c앞에 공백을 넣지 않으면 '소문자를 입력해주세요' 라는 문장이 두번출력되고 입력을 받을 준비를 합니다.
%c의 앞에 공백을 넣으면 정상적으로 문장이 하나만 나오고 입력을 받을 준비를 합니다.

예제의 주석에선 '공백 문자 제외' 라고만 나와있어서 저 %c 앞의 공백은 정확히 무슨 역할을 하며 왜 공백이 없으면 문장이 두번 출력되는지 질문해 봅니다.

unipro의 이미지

단서는 "엔터키 역시 문자의 하나로 취급되다"는 것 입니다.

내 블로그: http://unipro.tistory.com