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초씩 대기한 뒤 화면을 지우는 방식으로 확장할 수 있습니다.