Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어로 현재 시간을 출력하는 디지털 시계 프로그램 만들기

C 언어로 현재 시간을 출력하는 디지털 시계 프로그램

이번 글에서는 C 언어를 사용해 현재 시간을 디지털 시계 형태로 화면에 출력하는 방법을 살펴보겠습니다. 날짜와 시간을 다루려면 표준 라이브러리인 time.h 헤더 파일을 활용하면 됩니다. 이 헤더 파일에는 날짜 및 시간 관련 작업을 처리할 수 있는 다양한 함수와 자료형이 정의되어 있습니다.

time.h의 주요 구성 요소 4가지

  • size_t : 부호 없는 정수형(unsigned integral type)으로, sizeof() 연산자의 결과값 타입입니다.
  • clock_t : 프로세서(CPU) 시간을 저장하는 데 사용됩니다.
  • time_t : 달력 시간(calendar time)을 저장하는 데 사용됩니다.
  • struct tm : 연, 월, 일, 시, 분, 초 등 날짜와 시간 전체를 담을 수 있는 구조체입니다.

예제 코드

아래 코드는 time(NULL) 함수로 현재 시간을 초 단위로 가져온 뒤, localtime() 함수로 지역 시간 구조체로 변환하고, printf()를 통해 '시:분:초' 형식으로 출력합니다.

#include <stdio.h>
#include <time.h>

int main() {
   time_t s;
   struct tm* curr_time;

   s = time(NULL);              // 현재 시간을 초 단위로 저장
   curr_time = localtime(&s);   // localtime() 함수로 현재 시간 구하기

   // HH:mm:ss 형식으로 출력
   printf("%02d:%02d:%02d", curr_time->tm_hour, curr_time->tm_min, curr_time->tm_sec);

   return 0;
}

실행 결과

23:35:44

코드 설명

time(NULL)은 1970년 1월 1일 00:00:00 UTC(유닉스 에포크)부터 경과한 시간을 초 단위로 반환하며, 이 값이 time_t 변수에 저장됩니다. localtime()은 이 값을 사용자의 지역 시간대에 맞는 struct tm 구조체로 변환해 줍니다. 구조체의 tm_hour, tm_min, tm_sec 멤버에는 각각 시, 분, 초 값이 들어 있으며, %02d 서식 지정자를 사용해 두 자리 숫자로 맞춰 깔끔하게 출력할 수 있습니다.

응용: 실시간으로 갱신되는 시계 만들기

위 예제는 프로그램 실행 시점의 시간을 한 번만 출력합니다. 실시간으로 계속 갱신되는 시계를 만들고 싶다면 while 반복문 안에서 매초 시간을 다시 읽어 출력하고, sleep() 함수로 1초씩 대기한 뒤 화면을 지우는 방식으로 확장할 수 있습니다.