Processing math: 100%

c 언어/c 표준 라이브러리(Standard C Library)

C time.h 개요 및 시간 관련 함수

임베디드 친구 2025. 2. 22. 09:17
728x90
반응형

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);
  • tlocNULL이 아닌 경우, 현재 시간을 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 구조체를 적절히 변환하는 방법을 익히면 다양한 시간 기반 기능을 효과적으로 구현할 수 있습니다.

반응형