본문 바로가기

미래(2015-2016)/자습

가운데 정렬



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <stdio.h>
#include <Windows.h>
#include <string.h>
 
void gotoxy(int x, int y);
void center(char *str);
void center_2(char *str, ...);
int getCursorPosition(void);
 
int main()
{
    char arr[] = "happy birthday to you";
 
    center(arr);
 
    return 0;
}
 
void center(char *str)
{
    int x = (80 - strlen(str)) / 2;
    int y = getCursorPosition();
 
    gotoxy(x, y);
    printf("%s", str);
    if (strchr(str, '\n'== NULL)
        printf("\n");
}
 
void center_2(char *str, ...)
{
    int x = (80 - strlen(str)) / 2;
    int y = getCursorPosition();
 
    gotoxy(x, y);
    printf("%s", str);
    if (strchr(str, '\n'== NULL)
        printf("\n");
}
 
 
void gotoxy(int x, int y)
{
    // COORD 구조체 : short x, short y로 이루어진 구조체 (x좌표, y좌표)
    COORD Pos = { x, y };
 
    // 화면처리 함수 windows.h 포함시켜야함
    // https://msdn.microsoft.com/ko-kr/library/windows/desktop/ms686025(v=vs.85).aspx  참고바람
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}
 
int getCursorPosition(void)
{
    CONSOLE_SCREEN_BUFFER_INFO buffInfo;
    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &buffInfo);
    // 현재콘솔스크린버퍼(GetStdHandle(STD_OUNPUT_HANDLE))에서 정보읽어와서 buffInfo에 저장
 
    return   buffInfo.dwCursorPosition.Y;
    //CONSOLE_SCREEN_BUFFER_INFO구조체형 변수 buffInfo에 속한
    //COORD형 dwCursorPosition 중 y값을 리턴(x, y좌표값이 들어있다)
}
cs


c150924_sortCenter.c


'미래(2015-2016) > 자습' 카테고리의 다른 글

소코반(준완성), 테트리스  (1) 2015.10.08
주차관리 프로그램  (0) 2015.09.25
야구게임  (0) 2015.09.24
단위별로 콤마 찍기  (0) 2015.09.23
주민등록번호 유효성 검사  (0) 2015.09.23