• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

continue문 질문입니다

23.11.23 09:38 작성 조회수 198

0

#include <stdio.h>

int main(void)

{

char ch;

while (1) {

ch = getchar();

if (ch == 'x')

break;

if (ch == 'q')

continue;

putchar(ch);

}

return 0;

}

이 예제에서 한 문자를 입력받을 때마다 while문이 실행되며 x인지 q인지를 검사하는 것으로 알고 있습니다. 만약에 aaaq를 입력하고 엔터를 누르지 않앗다면 q를 입력하는 순간 컨티뉴 문이 작동하여 putchar을 실행 시켜야 한다고 생각하는데 엔터를 눌러야만 작동하는 것이 이해가 안됩니다 ㅜㅜ 또한 getchar 함수는 한 글자씩 입력을 받는데 제가 if(ch == zxc) break;를 추가하고 zxc를 입력 후 엔터를 치면 브레이크 문이 작동 됩니다.

정리하자면 q나 x를 입력하는 순간에 브레이크나 컨티뉴 문이 작동 해야 하는게 아닌가요? 왜 엔터를 쳐야 작동하는지 모르겠습니다. 또한 getchar함수는 한글자만 입력받는 것으로 알고 있는데 왜 문자열로도 작동이 될까요?

답변 1

답변을 작성해보세요.

0

scanf(), getchar(), gets() 함수들은 모두 Buffered I/O 방식을 채택하고 있는 표준 입력 함수입니다. 이 함수들은 사용자 입력 정보가 저장되는 버퍼가 비어 있으면 사용자로부터 입력을 받는데 입력의 끝을 엔터키 입력으로 판단합니다. getchar() 함수는 입력 버퍼에서 한 글자를 가져오는 함수입니다. 그러나 비어 있다면 엔터키를 포함해 사용자 입력을 문자열로 받습니다. 물론 한 글자만 입력 한 후 엔터키를 입력해도 무방합니다.

글자를 입력하는 순간 그 값을 알고 싶다면 Non-buffered I/O 방식을 사용하는 getch(), getche() 함수를 이용하면 되겠습니다. 다시 말씀드리지만... getchar() 함수는 한 글자를 입력 받는 함수가 아니라 입력 버퍼에서 한 글자를 가져오는 함수 입니다. 참고하시기 바랍니다. :)

채널톡 아이콘