반응형
질문: vc++ 6.0 에서 gotoxy(), clrscr() 사용하는방법... trueman1982 / 2003-07-29 18:18
어떻게 하면 됩니까....

conio.h 인클루드시켜도 비주얼C++6.0 환경에선 지원이 안된다던데...

저 함수들을 사용할수 있는방법이 아예 없습니까????

알려주세요~~
답변: 방법이 있습니다. 있고요~ -_-; overfencing / 2003-07-30 22:14

방법이 왜 없습니까..?


답변하신분들께서 말씀하신대로 Visual C++ 6.0 에서는


gotoxy(), clrscr() 같은 함수를 직접 사용하는것은 불가능합니다.


그 이유는 vc++는 표준 Ansi C 이외의 함수를 거의 대부분 지원하지 않기 때문이죠.


위와 같은 콘솔IO 전용 함수들은 표준 Ansi C 에 포함되어있지 않습니다.


하지만, 방법이 완전히 없는건 아닙니다.



일단 말씀하신 clrscr() 함수는 화면을 지우는 함수입니다.


이 함수는 vc++에서 다음과 같이 대체할 수 있습니다.


system("cls");


system() 함수는 운영체제(일반적으로 도스) 명령어를 실행시키는 함수입니다.


도스 명령어로 cls는 화면을 지우는 명령어입니다. 위와 같이 하면 clrscr()을 쓴 것과 똑같은 효과를 냅니다.


위의 함수를 사용하실 때 conio.h 헤더파일은 선언해줄 필요가 없구요,


stdlib.h 헤더파일을 반드시 선언해주셔야 합니다.


ex)


#include   // 입출력

#include   // getch()를 위해 선언한 것입니다.

                    // 이 헤더파일은 system()하고는 관계 없습니다. -_-;

#include // system()

 

int main(void)

{

   printf("Press any key to clear screen...");

 

   getch(); // 키 하나를 입력받을때까지 대기합니다.

 

   system("cls"); // 화면을 지웁니다.

 

   return 0;

}



다음 gotoxy() 함수는 커서의 위치를 이동시키는 함수입니다.


이 함수를 대체하려면 비슷한 효과를 내는 SetConsoleCursorPosition() 함수를 사용하셔야 합니다. 윈 API 에서 기본적으로 제공하는 함수중의 하나인데요, 이름이 좀 길죠. -_-;


곧바로 사용하시면 안되고 아래와 같이 응용하셔서 사용하시면 됩니다.


쓰실 때 그대로 복사해갖고 쓰세요. 소스 처음 부분에 프로토타입 선언해주시는거 잊으시면 안 됩니다. ^^


void gotoxy(int x, int y)
{
   COORD Pos = {x - 1, y - 1};

   SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}


gotoxy() 함수랑 100% 똑같은 효과를 냅니다. 물론 사용법도 gotoxy() 함수랑 똑같습니다.


마찬가지로 위의 방법을 사용하실때는 conio.h 헤더파일을 선언하실 필요는 없습니다.


하지만 windows.h 헤더파일을 반드시 선언해주셔야 합니다.


아래 참고로 짜 본 소스 코드 꼭 참고하시길...


ex)


#include // SetConsoleCursorPosition(), GetStdHandle()

#include    // 입출력

 

void gotoxy(int x, int y); // 모든 함수에서 (main()함수 포함)

                           // 이 함수를 사용할 수 있도록 프로토타입을

                           // 선언해줍니다.

 

int main(void)

{

   gotoxy(15, 10); // 현재 커서의 위치를 가로 15, 세로 10 으로 바꿉니다.

 

   printf("* (15, 10)"); // 출력하는겁니다. 아실거라고 믿쑵니다. -_-a

 

   return 0;

}

 

void gotoxy(int x, int y)
{
   COORD Pos = {x - 1, y - 1};

   SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}



오랜만에 답변다운 답변 해드린 것 같네요.


큰 도움 되셨기를 바랍니다. ^^

 
반응형

+ Recent posts