c언어 단순 질문

조회수 755회

c언어 초급자입니다. scanf를 공부하다가 궁금한 점이 생겨 질문 드립니다.

#include<stdio.h>

int main()
{
char c;

printf("a");
scanf("%c", &c);
while(getchar() != '\n');
printf("b");

return 0;
}

위 코드에서 c에 c를 입력한다고 할 때, 버퍼에 '\n'가 남아있고 이를 지우기 위해 while문을 작성했습니다. 결과적으로 'acb'가 나타나게 실행하고 싶은데 ac b 이렇게 실행이 됩니다. 왜 이런가요??

1 답변

  • 콘솔창 나오는 순서대로 적으면 printf("a") 가 나오고 그다음 scanf("%c", &c)가 나오고 그다음 printf("b")가 나오는거에요

    c를 입력하고 엔터를 눌렀으니 c와 엔터가 나오는거죠 [a][c+Endter][b] 이렇게요 getchar로 입력버퍼를 비운다고해서 콘솔창에 출력된게 사라지지는 않습니다. 말그대로 입럭버퍼만 비우는거죠.... 님이 원하는데로 출력하려면

    printf("a"); printf("%c", getch()); printf("b");

    이렇게 하면 되겠네요

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

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

(ಠ_ಠ)
(ಠ‿ಠ)