C 언어 표준 라이브러리 time.h
개요 및 시간 관련 함수
C 언어에서 시간과 관련된 기능을 제공하는 표준 라이브러리는 time.h
입니다. 이 라이브러리는 시스템 시간을 다루거나 프로그램 실행 시간을 측정하는 데 유용합니다. 이번 포스팅에서는 time.h
에서 제공하는 주요 함수인 time
, clock
, difftime
, mktime
을 살펴보고, 각 함수의 사용법과 예제를 설명하겠습니다.
1. time.h
개요
time.h
는 시간 및 날짜 관련 함수를 포함하는 헤더 파일입니다. 주요 기능은 다음과 같습니다:
- 현재 시간을 가져오기 (
time
함수) - 프로그램 실행 시간을 측정하기 (
clock
함수) - 두 시간의 차이를 계산하기 (
difftime
함수) tm
구조체를 사용하여 시간 변환 (mktime
함수)
이제 각 함수의 사용법을 살펴보겠습니다.
2. time()
함수
time()
함수는 현재 시간을 초 단위로 반환합니다. 반환값은 time_t
타입으로, 1970년 1월 1일 00:00:00 UTC(유닉스 시간)부터의 초 단위 경과 시간을 의미합니다.
함수 원형
#include <time.h>
time_t time(time_t *tloc);
tloc
이NULL
이 아닌 경우, 현재 시간을tloc
가 가리키는 변수에 저장합니다.- 반환값은 현재 시간의
time_t
값입니다.
예제
#include <stdio.h>
#include <time.h>
int main() {
time_t now;
now = time(NULL);
printf("현재 시간(초 단위): %ld\n", now);
return 0;
}
3. clock()
함수
clock()
함수는 프로그램이 실행된 후 경과한 프로세서 시간을 측정하는 함수입니다. 단위는 CLOCKS_PER_SEC
이며, 일반적으로 초 단위 변환을 위해 사용됩니다.
함수 원형
#include <time.h>
clock_t clock(void);
- 반환값은 프로그램이 시작된 후 경과한 CPU 클럭 수입니다.
- 초 단위로 변환하려면
CLOCKS_PER_SEC
로 나누어야 합니다.
예제
#include <stdio.h>
#include <time.h>
int main() {
clock_t start, end;
double cpu_time_used;
start = clock();
for (volatile int i = 0; i < 100000000; i++); // 실행 시간 측정을 위한 더미 루프
end = clock();
cpu_time_used = (double)(end - start) / CLOCKS_PER_SEC;
printf("소요된 CPU 시간: %f 초\n", cpu_time_used);
return 0;
}
4. difftime()
함수
difftime()
함수는 두 개의 time_t
값(초 단위 시간)의 차이를 반환하는 함수입니다.
함수 원형
#include <time.h>
double difftime(time_t time1, time_t time2);
time1 - time2
의 결과(초 단위)를double
타입으로 반환합니다.
예제
#include <stdio.h>
#include <time.h>
int main() {
time_t start, end;
double diff;
start = time(NULL);
for (volatile int i = 0; i < 100000000; i++);
end = time(NULL);
diff = difftime(end, start);
printf("경과 시간: %.2f 초\n", diff);
return 0;
}
5. mktime()
함수
mktime()
함수는 struct tm
구조체를 time_t
값으로 변환하는 함수입니다. 이를 통해 사람이 읽기 쉬운 시간 표현을 초 단위 값으로 변환할 수 있습니다.
함수 원형
#include <time.h>
time_t mktime(struct tm *timeptr);
timeptr
는 변환할tm
구조체의 포인터입니다.- 반환값은 변환된
time_t
값입니다.
예제
#include <stdio.h>
#include <time.h>
int main() {
struct tm t = {0};
time_t time_val;
t.tm_year = 2025 - 1900; // 연도 (1900년 기준)
t.tm_mon = 1 - 1; // 월 (0부터 시작)
t.tm_mday = 31; // 일
t.tm_hour = 15; // 시
t.tm_min = 30; // 분
t.tm_sec = 0; // 초
time_val = mktime(&t);
printf("변환된 time_t 값: %ld\n", time_val);
return 0;
}
6. 정리 및 마무리
이번 포스팅에서는 C 표준 라이브러리 time.h
의 개요와 주요 함수(time
, clock
, difftime
, mktime
)에 대해 살펴보았습니다.
함수 | 설명 |
---|---|
time() |
현재 시간을 초 단위로 가져옴 |
clock() |
프로그램 실행 시간을 측정 |
difftime() |
두 시간의 차이를 초 단위로 반환 |
mktime() |
tm 구조체를 time_t 로 변환 |
시간을 다루는 함수들은 시스템의 시간 정보를 가져오거나 프로그램 실행 시간을 측정하는 데 필수적입니다. 특히 time_t
값과 struct tm
구조체를 적절히 변환하는 방법을 익히면 다양한 시간 기반 기능을 효과적으로 구현할 수 있습니다.
'c 언어 > c 표준 라이브러리(Standard C Library)' 카테고리의 다른 글
C 언어에서 환경 변수 다루기 (getenv, putenv, setenv, unsetenv) (0) | 2025.02.24 |
---|---|
C 언어 표준 API - time.h의 시간 변환 및 포맷팅 (strftime, gmtime, localtime) (0) | 2025.02.23 |
C math.h의 절댓값 및 기타 함수 설명 (0) | 2025.02.21 |
C언어 math.h의 삼각 함수 정리 (0) | 2025.02.20 |
C 표준 라이브러리 math.h 개요 및 기본 수학 연산 (0) | 2025.02.19 |