본문 바로가기
C

[C]gotoxy() 콘솔 커서 이동 함수(SetConsoleCursorPosition)

by Junk_Seo 2018. 1. 9.
반응형

gotoxy() 함수

printf()와 같은 함수를 사용하여 화면에 출력할 때 맨 앞이 아닌 내가 원하는 특정 위치에 출력을 하고 싶을 때 사용하는 함수가 gotoxy() 함수이다.

 

gotoxy() 함수는 어디에 따로 정의되어 있는 함수가 아니기 때문에 사용자가 직접 정의하여 사용하면 된다. 

함수의 형태는 다음과 같다.

void gotoxy(int x, int y)
{
	COORD Pos;
	Pos.X = x;
	Pos.Y = y;
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}

기본 모양은 위와 같으며 함수의 이름이나 내용은 본인 마음대로 표현하면 된다. 

다만 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos) 은 반드시 호출해줘야 한다.

gotoxy() 함수는 이 함수를 통해 위치를 지정할 수 있다.

 

Header 파일

gotoxy() 함수 안에 있는  SetConsoleCursorPosition() 함수를 사용하기 위해서는 <Windows.h>를 include 하면 된다.

실제로는 <WinCon.h> header에 정의되어 있지만 <Windows.h> header에서 <WInCon.h>를 include 하고 있기 때문에 <Windows.h>만 include 해서 사용하면 된다.

 

GetStdHandle()

이 함수는 실제 핸들을 반환하는 함수이며 그 안에 파라미터로 종류를 정해주면 핸들 값을 반환한다.

인자로 STD_OUTPUT_HANDLE를 주면 표준콘솔출력의 핸들을 반환해 준다.

 

SetConsoleCursorPosition()

이 함수는 첫 번째 인자로 핸들 값을 주고 두 번째 인자로 위치 값을 주면 정해진 위치로 커서가 이동한다.

 

사용법

미리 정의한 gotoxy() 함수를 사용하여 커서의 위치를 지정하고 printf()와 같은 출력 함수를 사용하면 된다.

void gotoxy(int x, int y);

int main()
{
	gotoxy(20, 20);
	printf("안녕하세요 \n");
	
    return 0;
}

void gotoxy(int x, int y)
{
	COORD Pos;
	Pos.X = x;
	Pos.Y = y;
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}

프로그램을 실행하면 다음과 같은 결과를 얻을 수 있다.

 

출처 : http://blog.naver.com/PostView.nhn?blogId=sharonichoya&logNo=220873844942

반응형

'C' 카테고리의 다른 글

[C]변수 const  (0) 2018.01.11
[C]kbhit(), getch(), 방향키입력  (0) 2018.01.09
[C/C++][함수]반환형  (0) 2018.01.08
[C][2차원배열]달팽이 배열  (0) 2018.01.02
[C][2차원 배열]홀수 마방진  (0) 2018.01.02