다음을 통해 공유


_strtime_s, _wstrtime_s

버퍼에 현재 시간을 복사합니다. 이러한 함수는 _strtime 버전, CRT 보안 기능에 설명된 것 처럼 보안 기능이 향상된 _wstrtime입니다.

구문

errno_t _strtime_s(
   char *buffer,
   size_t numberOfElements
);
errno_t _wstrtime_s(
   wchar_t *buffer,
   size_t numberOfElements
);
template <size_t size>
errno_t _strtime_s(
   char (&buffer)[size]
); // C++ only
template <size_t size>
errno_t _wstrtime_s(
   wchar_t (&buffer)[size]
); // C++ only

매개 변수

buffer
시간을 쓸 버퍼(10바이트 이상)입니다.

numberOfElements
버퍼 크기입니다.

반환 값

정상적으로 실행되는 경우 0입니다.

오류 조건이 발생하면 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 오류가 있는 경우 반환 값은 오류 코드입니다. 오류 코드는 ERRNO.H에 정의됩니다. 이 함수가 생성하는 정확한 오류는 다음 표를 참조하세요. 오류 코드 errno 에 대한 자세한 내용은 상수입니다.

오류 조건

buffer numberOfElements 반환 값 buffer의 내용
NULL (임의) EINVAL Not modified
NULL 아님(유효한 버퍼를 가리킴) 0 EINVAL Not modified
NULL 아님(유효한 버퍼를 가리킴) 0 < 크기 < 9 EINVAL 빈 문자열
NULL 아님(유효한 버퍼를 가리킴) 크기 > 9 0 설명에 지정된 형식의 현재 시간

보안 문제

매개 변수가 9보다 크면 버퍼에 잘못된 비NULL 값을 numberOfElements 전달하면 액세스 위반이 발생합니다.

numberOfElements에 대해 버퍼의 실제 크기보다 큰 값을 전달하면 버퍼 오버런이 발생합니다.

설명

이러한 함수는 _strtime_wstrtime의 더 안전한 버전을 제공합니다. 함수는 _strtime_s 현재 현지 시간을 가리키는 버퍼에 복사합니다 buffer. 시간은 24시간 표기법의 시간을 나타내는 두 자리이고, 시간 경과 시간을 나타내는 두 자리이고, ss mm 초를 나타내는 두 자리 숫자인 hh:mm:ss hh형식이 지정됩니다. 예를 들어 문자열 18:23:44 는 오후 6시 이후 23분 44초를 나타냅니다. 버퍼의 길이는 9바이트 이상이어야 합니다. 실제 크기는 두 번째 매개 변수에 의해 지정됩니다.

_wstrtime_s_strtime_s의 와이드 문자 버전이고, _wstrtime_s의 인수와 반환 값은 와이드 문자 문자열입니다. 그 외의 경우에는 이들 함수가 동일하게 작동합니다.

C++에서는 템플릿 오버로드로 인해 이러한 함수를 사용하는 것이 보다 간단해 집니다. 오버로드는 버퍼 길이를 자동으로 유추할 수 있으며(크기 인수를 지정할 필요가 없어짐), 기존의 비보안 함수를 보다 최신의 보안 대응 함수로 자동으로 바꿀 수 있습니다. 자세한 내용은 안전한 템플릿 오버로드를 참조하세요.

이러한 함수의 디버그 라이브러리 버전은 먼저 버퍼를 0xFE 채웁니다. 이 동작을 사용하지 않도록 설정하려면 .를 사용합니다 _CrtSetDebugFillThreshold.

기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.

일반 텍스트 루틴 매핑

TCHAR.H 루틴 _UNICODE_MBCS 정의되지 않음 정의된 _MBCS 정의된 _UNICODE
_tstrtime_s _strtime_s _strtime_s _wstrtime_s

요구 사항

루틴에서 반환된 값 필수 헤더
_strtime_s <time.h>
_wstrtime_s <time.h> 또는 <wchar.h>

호환성에 대한 자세한 내용은 호환성을 참조하세요.

예시

// strtime_s.c

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

int main()
{
    char tmpbuf[9];
    errno_t err;

    // Set time zone from TZ environment variable. If TZ is not set,
    // the operating system is queried to obtain the default value
    // for the variable.
    //
    _tzset();

    // Display operating system-style date and time.
    err = _strtime_s( tmpbuf, 9 );
    if (err)
    {
       printf("_strdate_s failed due to an invalid argument.");
      exit(1);
    }
    printf( "OS time:\t\t\t\t%s\n", tmpbuf );
    err = _strdate_s( tmpbuf, 9 );
    if (err)
    {
       printf("_strdate_s failed due to an invalid argument.");
       exit(1);
    }
    printf( "OS date:\t\t\t\t%s\n", tmpbuf );

}
OS time:            14:37:49
OS date:            04/25/03

참고 항목

시간 관리
asctime_s, _wasctime_s
ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s_wctime64_s
gmtime_s, , _gmtime32_s_gmtime64_s
localtime_s, , _localtime32_s_localtime64_s
mktime, , _mktime32_mktime64
time, , _time32_time64
_tzset