[C언어/C++] 원하는 좌표로 커서 이동하기 (SetConsoleCursorPosition)

콘솔 화면의 특정위치에 출력을 하기 위해 줄바꿈 printf("\n") 으로 이동한다면 화면이 밀릴 수 있어 화면이 깨질 위험이 있습니다. 그러므로 특정위치에 출력을 할때는 커서를 해당 좌표로 이동시킨 뒤 확실하게 출력하는 방법을 써야합니다.

 

SetConsoleCursorPosition 함수를 통해 커서 이동

void gotoxy(int x, int y){
    //x, y 좌표 설정
    COORD pos={x,y}; 
     //커서 이동
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}

windowswindows.h 헤더에 존재하는 SetConsoleCursorPosition 으로 좌표를 이동시킬 수 있습니다. 대부분 위와 같이 gotoxy라는 함수를 하나 만들어주고 사용합니다.

 

COORD : 커서의 위치를 저장하는 구조체
SetConsoleCursorPosition : 커서의 위치를 이동시키는 함수
GetStdHandle : 콘솔창 핸들

 

콘솔 좌표

콘솔 좌표 이동

콘솔의 좌표는 위의 그림과 같습니다. 우리가 일반적으로 생각하고 있는 배열의 좌표와 같은데요. 세로축은 Y방향, 가로축은 X방향이며 아래쪽, 오른쪽으로 갈수록 각각 Y와 X의 크기가 커집니다.

 

커서 이동 예제

#include <iostream>
#include <windows.h>

void gotoxy(int x, int y) {
    //x, y 좌표 설정
    COORD pos = { x,y };
    //커서 이동
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
void main() {
    gotoxy(10, 3);
    std::cout << "☆";
    gotoxy(3, 10);
    std::cout << "★";
}

커서 이동 후 점찍기

위와 같이 좌표를 강제로 이동하여 출력할 수 있습니다.

댓글

Designed by JB FACTORY