C/문법

[C] 콘솔창 위치 변경법

Rix 2021. 9. 24. 10:45
콘솔창 출력 위치 변경하는 방법

1. <windows.h> 헤더파일 추가

--> 이 파일에는 윈도우 개발자들이 필요한 모든 매크로와 함수들을 모아놨다.

콘솔의 위치를 지정할 수 있는 함수도 포함하고 있음.

 

2. GotoXY라는 이름으로 작성한다. (널리 퍼진 함수 형태이다)

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

- COORD

실제 형태는 다음과 같다.

typedef struct _COORD {
	SHORT X;
	SHORT Y;
} COORD, *PCOORD;

COORD라는 구조체는 헤더파일에 선언되어 있는 x, y 값을 저장한다.

 

- SetConsoleCursorPosition

BOOL WINAPI SetConsoleCursorPosition(
  _In_ HANDLE hConsoleOutput,
  _In_ COORD  dwCursorPosition
);

콘솔의 핸들값과 좌표값을 받아서 해당 위치로 콘솔의 커서가 이동시킨다.

*콘솔의 핸들값은 콘솔이 가지는 ID라고 생각하면 된다.

 

GetStdHandle(STD_OUTPUT_HANDLE)

콘솔 ID를 구하기 위해 사용된다.

GetStdHandle(STD_OUTPUT_HANDLE)

 

사용예시)

#include <windows.h>
#include <stdio.h>

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

int main(void) 
{
    GotoXY(40, 5);
    printf("Hello, World!");
    printf("\n\n");

    return 0;
}