scanf("%c", &var) ; 와 scanf("%c ", &var) ; 의 차이 (전자는 형식지정자 뒤에 스페이스 없음, 후자는 형식지정장 뒤에 스페이스 있음)

조회수 777회

pragma warning(disable: 4996)

include

int main() { char var_1, var_2; scanf("%c", &var_1); printf("%c\n", var_1); scanf("%c ", &var_2); //형식 지정자 뒤에 스페이스 추가 printf("%c\n", var_2); }

/* C언어 공부중에 "문자를 입력받을 때는 scanf("%c ", &var); 을 사용하자. 형식 지정자에 스페이스를 넣어야 줄바꿈 문자가 제거된다." 라고 책에 써 있는데요, 무슨 차이가 있는지 모르겠습니다. 그리고 차이가 있다면, 왜 그런 차이가 일어나는지 알려주실 분 있나요? */

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • scanf()는 문자를 입력받을때 입력버퍼를 이용하여 입력을 받는데, 형식지정자 형태의 문자만 입력버퍼에서 읽어오고,

    입력을 완료함을 알리기 위해 누른 엔터, 즉 \n, 줄바꿈 문자라고 말씀하신 문자는 입력버퍼에 남아있습니다.

    이 상태에서 scanf()를 한번 더 호출하면 입력버퍼에 남아있는 \n을 읽어오기 때문에 제대로 된 입력을 받을 수 없습니다

    이런 현상을 방지하기 위해 형식지정자에 띄어쓰기를 추가하여 줄바꿈 문자를 제거하라고 적어놓은 것입니다만 실제로 제거되는지는 잘 모르겠네요.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)