_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