본문 바로가기

프로그래밍/C

[C언어]CMD Printf 고급 스킬! (c언어 커서 위치 바꾸기)

반응형

안녕하세요. 두부입니다.

제목을 뭘로 지을지 몰라서 저렇게 지었는데.. 무슨말인지 모르시겠죠 ㅜ 저도 잘 표현하기가 힘드네요.

제가 프로그래밍을 하다가, printf문으로 폼을 미리 출력하고 커서 위치를 자유자재로 지정하여 문자를 입/출력하는 프로그램을 만들고 싶었습니다.

그래서 만들었습니다.

 

일단 완성 사진부터 보여드리겠습니다.

 

일단 틀을 먼저 출력한 후, scanf문을 이용하여 ( ) 괄호안에 문자를 입력받는 프로그램입니다.

즉, 원래 1,2,3 이 있던 자리는 빈칸이고, 위 괄호 안부터 순서대로 커서가 깜박거리며 문자를 입력하라고 사용자에게 알려주는 프로그램입니다.

 

그럼 코드를 보겠습니다.

 

#include "stdafx.h"

#include <stdio.h>

#include <stdlib.h>

#include <windows.h>

#pragma warning (disable:4996)

 

void MoveCursor(int row,int lines);

 

int main(int argc, char *argv[])

{

   char TestA[5];

   int TestB, TestC;

   printf("              Test Test Test       \n\n");

   printf("       > Set TestA[5] naver blog ssundong0_0   ( ) \n");

   printf("       > Set TestB    naver blog ssundong0_0   ( ) \n");

   printf("       > Set TestC    naver blog ssundong0_0   ( ) \n");

   MoveCursor(0, 5);

   printf("              Test Test Test       \n\n");

   printf("       > Set TestA[5] naver blog ssundong0_0   ( ) "); MoveCursorUp(3, 0); scanf("%s", TestA);

   printf("       > Set TestB    naver blog ssundong0_0   ( ) "); MoveCursorUp(3, 0); scanf("%d", &TestB);

   printf("       > Set TestC    naver blog ssundong0_0   ( ) "); MoveCursorUp(3, 0); scanf("%d", &TestC);

}

 

void MoveCursor(int row, int lines) {

   CONSOLE_SCREEN_BUFFER_INFO coninfo;

   HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

   GetConsoleScreenBufferInfo(hConsole, &coninfo);

   coninfo.dwCursorPosition.X -= row;

   coninfo.dwCursorPosition.Y -= lines;

   SetConsoleCursorPosition(hConsole, coninfo.dwCursorPosition);

}

 

상세한 함수들은 MSDN을 참조해주시길 바랍니다. (나중에 시간이 되면 포스팅 하겠습니다!)

여기서 핵심은 제가 만든 'MoveCursor' 함수로 2개의 인자값을 받아 그만큼 커서의 위치를 조정시키는 함수입니다.

한번 프로그램을 복사 붙여놓기하시고, 함수의 인자값을 이렇게 저렇게 바꿔보면서 함수를 파악해보시길 바랍니다.

제가 말로 길게 설명하는것보다 직접 실습해보시는게 훨~~씬 이해가 빠르게 되실거에요!

 

반응형