언어 자료구조 알고리즘/C언어 예제

100분의 1초 단위로 현재 시각을 출력, C언어 소스

언제나휴일 2016. 4. 3. 18:56
반응형

100분의 1초 단위로 현재 시각을 출력, C언어 소스



100분의 1초 단위로 시각을 출력.c

time 함수는 단위 시각을 구하는 함수
localtime
단위 시각을 date time 시각으로 변환하는 함수
SetConsoleCursorPosition
콘솔 커서 위치를 설정하는 함수
kbhit
키를 눌렀는지 확인하는 함수

 

//100분의 1초 단위로 시각을 출력

#pragma warning(disable:4996)//4996경고 메시지 출력 해제

#include <time.h>//clock,time,localtime

#include <stdio.h> //printf

#include <conio.h>//kbhit

#include <Windows.h>//SetConsoleCursorPostion

 

void print_time(struct tm *now, int tail)

{

    COORD CursorPosition = { 0,1 };

    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), CursorPosition);

 

    //현재 시각을 출력

    printf("%2d %2d %2d %2d\n",

        now->tm_hour, now->tm_min, now->tm_sec, tail);

}

int main(void)

{

    clock_t sclock, nclock;//sclock:시작, nclock:현재(1/1000초 시간)

    time_t seconds; //초단위 시각

    struct tm *now; //date time 시각   

    int tail = 0;

    printf("종료를 원하시면 아무키나 누르세요.\n");

    sclock = clock();//시작 clock을 구합니다.

    time(&seconds);//초단위 시각을 구합니다.

    now = localtime(&seconds);//date time 시각을 구합니다.

    print_time(now, tail); //현재 시간을 출력

    while (1)

    {

        if (kbhit())//키를 누르면

        {

            break;//반복문 탈출

        }

        nclock = clock();

        if (nclock - sclock >= (CLOCKS_PER_SEC / 100))//clock/100초와 크거나 같으면

        {

            tail++;

            if (tail == 100)//1초가 지나면

            {

                tail = 0;

                sclock = clock();

                time(&seconds);//초단위 시각을 구합니다.

                now = localtime(&seconds);//date time 시각을 구합니다.

            }

            print_time(now, tail); //현재 시간을 출력

        }

    }

    printf("프로그램을 종료합니다.\n");

    return 0;

}

반응형