Namespaces
Variants

ctime, ctime_s

From cppreference.net
헤더 파일에 정의됨 <time.h>
(1)
char * ctime ( const time_t * timer ) ;
(C23 이전)
[ [ deprecated ] ] char * ctime ( const time_t * timer ) ;
(C23부터)
errno_t ctime_s ( char * buf, rsize_t bufsz, const time_t * timer ) ;
(2) (C11부터)
1) 주어진 에포크 이후 시간을 캘린더 현지 시간으로 변환한 후, 마치 asctime ( localtime ( timer ) ) 또는 asctime ( localtime_r ( timer, & ( struct tm ) { 0 } ) ) (C23부터) 를 호출하는 것처럼 텍스트 표현으로 변환합니다. 이 함수는 더 이상 사용되지 않으며 새 코드에서 사용해서는 안 됩니다. (C23부터)
2) (1) 과 동일하지만, 함수는 asctime_s ( buf, bufsz, localtime_s ( timer, & ( struct tm ) { 0 } ) ) 와 동등하며, 런타임에 다음 오류들이 검출되어 현재 설치된 constraint handler 함수를 호출합니다:
  • buf 또는 timer 가 null 포인터인 경우
  • bufsz 26 보다 작거나 RSIZE_MAX 보다 큰 경우
모든 bounds-checked 함수들과 마찬가지로, ctime_s 는 구현에 의해 __STDC_LIB_EXT1__ 가 정의되고 사용자가 <time.h> 를 포함하기 전에 __STDC_WANT_LIB_EXT1__ 를 정수 상수 1 으로 정의한 경우에만 사용 가능함이 보장됩니다.

결과 문자열은 다음 형식을 갖습니다:

Www Mmm dd hh:mm:ss yyyy\n
  • Www - 요일 ( Mon , Tue , Wed , Thu , Fri , Sat , Sun 중 하나).
  • Mmm - 월 ( Jan , Feb , Mar , Apr , May , Jun , Jul , Aug , Sep , Oct , Nov , Dec 중 하나).
  • dd - 일
  • hh - 시
  • mm - 분
  • ss - 초
  • yyyy - 연도

이 함수는 지역화를 지원하지 않습니다.

목차

매개변수

timer - time_t 객체를 가리키는 포인터로, 출력할 시간을 지정함
buf - 최소 bufsz 크기의 char 배열 첫 번째 요소를 가리키는 포인터
bufsz - 출력할 최대 바이트 수, 일반적으로 buf 가 가리키는 버퍼의 크기

반환값

1) 날짜와 시간의 텍스트 표현을 담고 있는 정적 null-terminated 문자 문자열에 대한 포인터. 이 문자열은 asctime ctime 사이에서 공유될 수 있으며, 이러한 함수들 중 어느 하나가 호출될 때마다 덮어씌워질 수 있습니다.
2) 성공 시 0(이 경우 시간의 문자열 표현이 buf 가 가리키는 배열에 기록됨), 실패 시 0이 아닌 값(이 경우, 종료 널 문자는 항상 buf [ 0 ] 에 기록됨. 단, buf 가 널 포인터이거나 bufsz 가 0이거나 RSIZE_MAX 보다 큰 경우는 제외.

참고 사항

ctime 는 정적 데이터에 대한 포인터를 반환하며 스레드 안전하지 않습니다. 또한 정적 tm 객체를 수정하는데, 이 객체는 gmtime localtime 와 공유될 수 있습니다. POSIX는 이 함수를 사용되지 않는 것으로 표시하고 대신 strftime 사용을 권장합니다. C 표준 또한 ctime ctime_s 대신 strftime 사용을 권장하는데, 그 이유는 strftime 가 더 유연하고 로캘을 인식하기 때문입니다.

ctime 의 동작은 25자를 초과하는 문자열을 초래하는 time_t 값(예: 10000년)에 대해 정의되지 않습니다.

예제

#define __STDC_WANT_LIB_EXT1__ 1
#include <time.h>
#include <stdio.h>
int main(void)
{
    time_t result = time(NULL);
    printf("%s", ctime(&result));
#ifdef __STDC_LIB_EXT1__
    char str[26];
    ctime_s(str,sizeof str,&result);
    printf("%s", str);
#endif
}

가능한 출력:

Tue May 26 21:51:03 2015
Tue May 26 21:51:03 2015

참고문헌

  • C17 표준 (ISO/IEC 9899:2018):
  • 7.27.3.2 ctime 함수 (p: 287-288)
  • K.3.8.2.2 ctime_s 함수 (p: 454)
  • C11 표준 (ISO/IEC 9899:2011):
  • 7.27.3.2 ctime 함수 (p: 393)
  • K.3.8.2.2 ctime_s 함수 (p: 626)
  • C99 표준 (ISO/IEC 9899:1999):
  • 7.23.3.2 ctime 함수 (p: 342)
  • C89/C90 표준 (ISO/IEC 9899:1990):
  • 4.12.3.2 ctime 함수

참고 항목

(C23에서 사용 중단됨) (C11)
tm 객체를 텍스트 표현으로 변환
(함수)
tm 객체를 사용자 지정 텍스트 표현으로 변환
(함수)