Programming/C Lang Lecture

[C언어 강좌]10강 : [번외] getch()로 입력받기

yutaejeong 2014. 7. 27. 14:08


Written By StableVer.

[C언어 강좌]10강 : [번외] getch()로 입력받기



목차

1. getch()를 멈추는데에 사용하기

2. getch()를 입력받는데에 사용하기



1. getch()를 멈추는데에 사용하기

10강은 번외편입니다. 번외편은 정식 강좌와 다르게 게임제작등에 유용한 스킬을 구사할 수 있게 해주는 강의입니다.

자, 이번 번외편에서는 getch()란 함수를 배워보도록 하겠습니다.

제가 그러고보니 0~9강까지 함수에 대한 설명을 하질 않았군요?

함수는 특정한 명령을 수행하는 프로그램의 한 단위입니다. 프로그램의 부품이라고 할 수 있죠.

지금까지 배운 printf 같은 명령은 원래 함수라고 부르는게 맞습니다.

(제 지인분중 하나는 함수를 명령명령거리면 짜증이 난다고 하더군요)

getch()는 어떤 역할인지 본격적으로 설명하겠습니다.


getch() 함수는 기본적으로 키보드 입력을 받는 역할을 합니다. 하지만 1번에서 설명할 getch()의 역할은 프로그램을 키보드로 누를때까지 일시적으로 정지하는 역할입니다.

일단 이전에 만들어 보았던 Hello, world! 프로그램을 다시한번 만들어 봅시다.

1
2
3
4
5
6
#include<stdio.h>
 
int main(){
    printf("Hello world!");
    return 0;
}

결과는 F11을 눌러서 간단하게 확인할 수 있습니다. 그런고로 생략하도록 하겠습니다.

그런데 exe파일은 어디있을까요? 바로 코드를 저장한 위치에 같이 있습니다.


자, 이제 exe를 실행해 봅시다.....그런데

실행이 되지 않습니다?!

여러분들이 보는것은 실행하자마자 깜박이고 사라지는 결과창일겁니다.

이젠 getch()를 넣어서 소스를 만들어 봅시다.

1
2
3
4
5
#include<stdio.h>
int main(){
    printf("Hello world!");
    getch();
    return 0;

결과를 보기 위해 F11을 눌러봅시다.

뭔가 빠진게 있다고 생각되지 않으세요?

그렇습니다! 밑에 

--------------------------------

Process~~~~~~~~~~~~~

가 빠진것 같죠? 한번 키보드에서 아무키나 누르시면 프로그램이 종료되며 정상적으로 문구가 뜰 것입니다.이번엔 exe파일로 실행해 보세요. 역시 위와 같은 화면이 나타날 것입니다. 그리고 키보드로 아무키나 누르면 프로그램이 종료됩니다.

지금 이 프로그램에서 키보드를 누를때까지 프로그램이 종료되지 않은 이유는 getch()의 역할 때문입니다.

왜냐면 getch()함수는 실행되면 키보드가 눌려 입력이 들어올때까지 종료되지 않는 함수이기 때문입니다.

getch()는 그래서 프로그램을 키보드를 누를때까지 멈추는데에 자주 쓰입니다.


2. getch()를 입력받는데에 사용하기

자, 1번에서 프로그램을 정지시키는데에 사용했을 겁니다. 그러나, 프로그램을 일시정지시키는것만으로는 게임을 만드는데에 별로 많이 중요한것 같지 않습니다. 그래서 getch함수의 진짜 역할을 알려드리겠습니다. 다음 예제소스를 봅시다.

1
2
3
4
5
6
7
8
9
#include<stdio.h>
 
int main(){
    char ch_=0;
    printf("Press keyboard\n");
    ch_=getch();
    printf("You pressed:%c", ch_);
    return 0;
}

여기서 함수의 또다른 특징인 반환 이라는 특징을 볼 수 있습니다.

반환은 함수가 종료될때에 어떤 값을 뱉어내는것을 의미하는데, 이 값은 변수에 저장될 수 있습니다.

이 프로그램을 실행시키고 g키를 눌러보도록 하겠습니다.

*g키를 눌렀다는것이 정상적으로 나왔습니다.

프로그램이 이런 결과를 출력했습니다. 어떻게 가능한 것일까요?

이렇게 getch함수는 키보드값을 char형 값으로 바꾸어 ch_에 저장하고 저장된 ch_의 값을 printf로 출력한 것입니다. 이 기능은 키보드로 이동하는 게임에서 유용하게 쓰일 것 입니다. 이번 강좌 마칩니다.


다음강좌

11강 : 주석으로 코드 설명하기


[C언어 강좌]10강 : [번외] getch()로 입력받기