c언어 / 엔터키 사용 콘솔 창 닫기 / 자동 닫힘 방지

C언어를 처음 공부할 때 콘솔 창이 자동으로 닫히는 경우 때문에 난감할 때가 있다.
터미널에서 직접 실행해도 되지만, 텍스트 명령어를 입력하는 것 때문에 불편함도 있다.
엔터키를 사용하여 콘솔 창 닫기 방법이 있다면 편할 것 같다.
표준 C함수 중 getchar()를 사용하면 엔터키를 사용한 콘솔 창 닫기가 가능해 진다.

c언어 / 엔터키 사용 콘솔 창 닫기 / 자동 닫힘 방지
c언어
엔터키 사용 콘솔 창 닫기
자동 닫힘 방지

불편한 콘솔 창 자동 닫힘

지금의 C언어가 자주 사용되는지는 모르겠지만, 어쨌든 처음 공부를 시작할 때 느끼는 점은 불편함에 있다.
아마도 리눅스 사용자들이라면 표준 C언어를 사용할 것이지만, 윈도우의 비주얼스튜디오를 설치하고 C언어를 컴파일 실행하면 불편하다.
또한, 공부를 위해 코드를 입력하고 실행을 시키면 콘솔 창이 나타났다 바로 사라진다.
당혹스럽지만 해결책은 있다.
`getchar()` 함수를 사용하여 입력 대기 상태로 설정하면 된다.
코드의 마지막에 해당 함수를 작성하면 프로그램의 동작이 멈추고 문자를 입력받도록 기다리도록 하는 것이다.

getchar() / 표준 C함수

getchar() 함수를 간단히 살펴보자.
getchar() 함수는 사용자가 키보드로 문자를 입력받을 때까지 대기시키는 표준 C 라이브러리이다.
프로그램이 실행 중 해당 함수를 만나면 중단하고, 사용자가 키보드를 누를 때까지 기다린다.
과거 프로그램들이 텍스트 기반으로 어떤 명령어를 입력받기 위해 자주 사용되었다.
리턴값은 int형의 숫자이며, 키보드의 엔터키를 누를 경우 종료된다.
C언어를 처음 공부할 때 콘솔 창이 자동으로 닫히는 경우 getchar() 함수를 사용하여 엔터키를 눌러 종료시키도록 할 수 있다.

  • getchar() / 표준 C 함수
    • 사용자가 키보드를 누를 때까지 대기.
    • 리턴값은 숫자.
    • 엔터키: 문자 입력의 종료.

예제 코드

예제 코드를 살펴보자.
아주 간단한 C 언어 코드이다.
실행하면 콘솔 창이 나타나고 문자열을 출력한다.
사용자로부터 어떤 문자를 입력받도록 기다린 후 엔터를 치면 프로그램이 종료되도록 하였다.
물론, 콘솔 또는 터미널에서 직접 실행하면 어떤 차이인지 보이지 않겠지만, 비주얼스튜디오에서 실행했을 경우 getchar() 입력함수를 사용해 콘솔창 자동 닫힘을 방지할 수 있다.
그리고, 엔터키를 치면 프로그램이 종료되고 콘솔창이 사라지는 것을 볼 수 있다.


#include <stdio.h>

int main(void) {

    /* 문자열 출력 */
    printf("hello, world.\n");

    /* 중단처리, 엔터키 종료 */
    printf("\n");
    printf("아무 키나 누르고 Enter를 누르세요...\n");
    int ch = getchar();
    printf("입력한 문자: %c\n", ch);

    /* 프로그램 종료 */
    return 0;
}

결과보기

비주얼스튜디오를 사용한다면 위의 코드를 입력한 후 단축키 F5를 누르면 작성된 코드를 콘솔창에 실행하는 모습을 보여줄 것이다.
그리고, 아무 키나 누르고 Enter를 누르세요...란 메세지가 나타나고 프로그램은 대기 상태에 놓인다.
사용자가 키보드를 누르기를 기다리는 것이다.
키보드를 아무거나 누르면 눌려진 키보드의 문자가 보이겠지만, 엔터키를 누르면 프로그램이 종료되며 콘솔창도 닫히는 것을 볼 수 있다.
비주얼스튜디오에서 콘솔 창의 자동 닫힘 방지를 위해 getchar() 함수를 사용할 수 있음을 알았다.

getchar() / 엔터키 입력 대기
getchar()
엔터키 입력 대기

댓글

이 블로그의 인기 게시물

귀문과 혼문 뜻 어떤 영(靈)들이 드나드는 문

윈도우 캡쳐 이미지 자동 저장 위치 찾기

포토피아 모자이크 효과 만들기 인터넷 포토샵 사용

Featured Post

메타인지 뜻과 학습 방법 / 너 자신을 알라

언제부턴가 메타인지( Meta Congnition )에 대한 얘기를 많이 듣게 된다. 내가 무엇을 알고, 무엇을 모르는지 파악하는 것부터, 나 자신이 어떤 성향인지를 객관적으로 파악하는 심리학적 요소같다. 나를 가장 빠르게 파악하는 방법이 있다면 타인의 시선을 관찰하는 방법인데, 나를 좋아하는 사람은 그에 따른 이유가 있을 것이고, 나를 멀리하는 사람 또한 그에 따른 이유가 있을 것이다. 어떤 일을 하거나, 공부를 할 때도 메타인지를 활용할 수 있는데, 어떤 문제에 대해 정확히 설명이 가능한 것과 모르거나 또는 알다가도 모를 난해한 것들을 파악하는 것도  메타인지의 일부일 것이다. 이런 관점을 파악하면 내가 무엇을 해야 하고, 어떻게 행동해야 하는지 객관적인 지표를 만들 수 있다고 하지만, 정작 이런 메타인지 관점의 객관성을 아는 것은 어렵다. `옛말에 점쟁이도 자기 앞길은 모른다고 했다.` 이 문장만 봐도, 사람들은 정작 나 자신을 객관적인 메타인지가 잘 되지 않지만, 타인에게는 바라보는 시점은 상당히 객관적일 수 있다. ▣ 단어의 뜻 메타인지란 단어는 영어와 한자의 조합이다. Meta + 認知 합성어 Meta 라는 단어의 의미가 많이 난해한 감이 있지만, 접두어로써 찾아보면 about itself / beyond 란 의미가 있다. meta 란 단어는 어떤 것에 대한 것을 뜻하고, 認知 란 단어는 어떤 것을 알고 있는 것을 뜻하는데,  단순히 알고 있는 것이 아닌 정확하고 객관적인 사실적인 인지를 뜻한다. meta : 어떤 것에 대한 것 認知 : 認 알 인, 知 알 지 즉, 메타인지 ( Meta認知) 는 어떤 것을 정확히 알고 인지하고 있는 것을 의미한다.