C언어/C언어 예제

[C언어 소스] 디지털 시계

언제나휴일 2016. 4. 13. 00:24
반응형

[C언어 소스] 디지털 시계

언제나 휴일 티스토리


[C언어 소스] 디지털 시계



디지털 시계.c


#include <Windows.h>

#include <stdio.h>

#include <time.h>

#include <conio.h>

#pragma warning(disable:4996)

char*digits[10][5][4] =//0~9까지 출력할 정보

{

    {

        { "","","","" },

        { "","  ","  ","" },

        { "","  ","  ","" },

        { "","  ","  ","" },

        { "","","","" }

    },

    {

        { "  ","  ","  ","" },

        { "  ","  ","  ","" },

        { "  ","  ","  ","" },

        { "  ","  ","  ","" },

        { "  ","  ","  ","" }

    },

    {

        { "","","","" },

        { "  ","  ","  ","" },

        { "","","","" },

        { "","  ","  ","  " },

        { "","","","" }

    },

    {

        { "","","","" },

        { "  ","  ","  ","" },

        { "","","","" },

        { "  ","  ","  ","" },

        { "","","","" }

    },

    {

        { "","  ","","  " },

        { "","  ","","  " },

        { "","","","" },

        { "  ","  ","","  " },

        { "  ","  ","","  " }

    },

    {

        { "","","","" },

        { "","  ","  ","  " },

        { "","","","" },

        { "  ","  ","  ","" },

        { "","","","" },

    },

    {

        { "","  ","  ","  " },

        { "","  ","  ","  " },

        { "","","","" },

        { "","  ","  ","" },

        { "","","","" }

    },

    {

        { "","","","" },

        { "","  ","  ","" },

        { "","  ","  ","" },

        { "  ","  ","  ","" },

        { "  ","  ","  ","" }

    },

    {

        { "","","","" },

        { "","  ","  ","" },

        { "","","","" },

        { "","  ","  ","" },

        { "","","","" }

    },

    {

        { "","","","" },

        { "","  ","  ","" },

        { "","","","" },

        { "  ","  ","  ","" },

        { "  ","  ","  ","" }

    }

};

 

int sx[6] = { 0,10,24,34,48,58 };//시분초를 출력할 x좌표

 

char *colons[5] = { " ","","  ","","  " };

int sx2[6] = { 20,44 };//콜론을 출력할 좌표

 

void gotoxy(int x, int y)

{

    COORD Pos = { x,y };

    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);

}

 

 

//dn자리에 정수 n을 출력하는 함수

void DrawNum(int dn, int n)

{

    int y, x;

 

    for (y = 0; y<5; y++)

    {

        for (x = 0; x<4; x++)

        {

            gotoxy(sx[dn] + x * 2, y);

            printf("%s", digits[n][y][x]);

        }

        printf("\n");

    }

}

 

 

//콜론을 출력하는함수 n 0이면 시와 분사이, 1이면 분과 초사이

void DrawColon(int n)

{

    int y = 0;

 

 

    for (y = 0; y<5; y++)

    {

        gotoxy(sx2[n], y);

        printf("%s\n", colons[y]);

    }

 

}

 

 

//시간을 출력하는함수

void DrawTime(int h, int m, int s)

{

    DrawNum(0, h / 10);//시의 앞자리

    DrawNum(1, h % 10);//시의 뒷자리

    DrawColon(0);//콜론

    DrawNum(2, m / 10);//분의 앞자리

    DrawNum(3, m % 10);//분의 뒷자리

    DrawColon(1);//콜론

    DrawNum(4, s / 10);//초의 앞자리

    DrawNum(5, s % 10);//초의 뒷자리

}

 

int main(void)

{

    time_t now, before;

    struct tm nt;

 

    gotoxy(0, 8);

    printf("아무키나 누르면 프로그램 종료");

 

    now = before = time(0); //초 단위 시간을 구함

    localtime_s(&nt, &now); //지역 시각을 구함

    DrawTime(nt.tm_hour, nt.tm_min, nt.tm_sec);//현재 시각을 출력

    while (kbhit() == 0)

    {

        now = time(0);//초단위 시간을 구함

        if (now != before)//다르면

        {

            before = now;//현재 초단위 시간을 기억

            localtime_s(&nt, &now);//지역 시각을 구함

            DrawTime(nt.tm_hour, nt.tm_min, nt.tm_sec);//현재 시각을 출력

        }

    }

 

    return 0;

}

반응형