strerror_s
, _strerror_s
, _wcserror_s
__wcserror_s
시스템 오류 메시지(strerror_s
, _wcserror_s
)를 가져오거나, 사용자가 제공한 오류 메시지(_strerror_s
, __wcserror_s
)를 출력합니다. 이러한 함수는 CRT의 _wcserror
_strerror
__wcserror
strerror
보안 기능에 설명된 대로 향상된 보안 기능을 갖춘 버전입니다.
구문
errno_t strerror_s(
char *buffer,
size_t sizeInBytes,
int errnum
);
errno_t _strerror_s(
char *buffer,
size_t sizeInBytes,
const char *strErrMsg
);
errno_t _wcserror_s(
wchar_t *buffer,
size_t sizeInWords,
int errnum
);
errno_t __wcserror_s(
wchar_t *buffer,
size_t sizeInWords,
const wchar_t *strErrMsg
);
template <size_t size>
errno_t strerror_s(
char (&buffer)[size],
int errnum
); // C++ only
template <size_t size>
errno_t _strerror_s(
char (&buffer)[size],
const char *strErrMsg
); // C++ only
template <size_t size>
errno_t _wcserror_s(
wchar_t (&buffer)[size],
int errnum
); // C++ only
template <size_t size>
errno_t __wcserror_s(
wchar_t (&buffer)[size],
const wchar_t *strErrMsg
); // C++ only
매개 변수
buffer
오류 문자열을 저장할 버퍼입니다.
sizeInBytes
버퍼의 바이트 수입니다.
sizeInWords
버퍼의 단어 수입니다.
errnum
오류 번호입니다.
strErrMsg
사용자 제공 메시지
반환 값
성공시 0, 실패시 오류 코드.
오류 조건
buffer |
sizeInBytes /sizeInWords |
strErrMsg |
buffer 의 내용 |
---|---|---|---|
NULL |
any | any | 해당 없음 |
any | 0 | any | 수정 안 됨 |
설명
함수는 strerror_s
스레드로부터 안전합니다.
strerror_s
함수는 errnum
을 오류 메시지 문자열로 매핑하고 buffer
에서 해당 문자열을 반환합니다. _strerror_s
는 오류 번호를 사용하지 않으며 errno
의 현재 값을 사용하여 적절한 메시지를 결정합니다. 메시지가 인쇄되거나 에 의해 strerror_s
_strerror_s
표시되지 않습니다. 메시지를 출력하려면 다음과 같은 fprintf
출력 함수를 호출해야 합니다.
if (( _access( "datafile",2 )) == -1 )
{
_strerror_s(buffer, 80, NULL);
fprintf( stderr, buffer );
}
이 NULL
_strerror_s
경우 strErrMsg
오류를 생성한 마지막 라이브러리 호출에 대한 시스템 오류 메시지가 포함된 문자열 buffer
을 반환합니다. 같지 않은 경우 strErrMsg
문자열 메시지, _strerror_s
콜론, 공백, 오류를 생성한 마지막 라이브러리 호출에 대한 시스템 오류 메시지가 포함된 문자열을 순서대로 반환 buffer
NULL
합니다. 문자열 메시지는 94자 이하여야 합니다.
이러한 함수는 길이가 버퍼 크기인 1을 초과하는 경우 오류 메시지를 자립니다. buffer
의 결과 문자열은 항상 null로 종료됩니다.
실제 오류 번호 _strerror_s
는 변수 errno
에 저장됩니다. 시스템 오류 메시지는 오류 번호로 정렬된 메시지 배열인 변수 _sys_errlist
를 통해 액세스됩니다. _strerror_s
는 errno
값을 변수 _sys_errlist
에 대한 인덱스로 사용하여 적합한 오류 메시지에 액세스합니다. 변수 _sys_nerr
의 값은 배열의 최대 요소 수로 _sys_errlist
정의됩니다. 정확한 결과를 생성하려면 라이브러리 루틴이 오류와 함께 반환된 직후에 호출 _strerror_s
합니다. 그렇지 않으면 strerror_s
또는 _strerror_s
에 대한 후속 호출이 errno
값을 덮어쓸 수 있습니다.
_wcserror_s
및 __wcserror_s
은 각각 strerror_s
및 _strerror_s
의 와이드 문자 버전입니다.
이러한 함수는 해당 함수 매개 변수의 유효성을 검사합니다. 버퍼이거나 NULL
크기 매개 변수가 0이면 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 계속해서 실행하도록 허용된 경우 이 함수는 EINVAL
을 반환하며 errno
를 EINVAL
로 설정합니다.
_strerror_s
는 _wcserror_s
__wcserror_s
ANSI 정의의 일부가 아니라 Microsoft 확장입니다. 이식성이 필요한 경우 사용하지 마세요. ANSI 호환성을 위해 대신 사용합니다 strerror_s
.
C++에서는 템플릿 오버로드를 통해 이러한 함수를 사용하는 것이 더욱 간단해집니다. 오버로드는 버퍼 길이를 자동으로 유추할 수 있으므로 크기 인수를 지정할 필요가 없습니다. 자세한 내용은 안전한 템플릿 오버로드를 참조하세요.
이러한 함수의 디버그 라이브러리 버전은 먼저 버퍼를 0xFE 채웁니다. 이 동작을 사용하지 않도록 설정하려면 .를 사용합니다 _CrtSetDebugFillThreshold
.
기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.
일반 텍스트 루틴 매핑
TCHAR.H 루틴 | _UNICODE 및 _MBCS 정의되지 않음 |
정의된 _MBCS |
정의된 _UNICODE |
---|---|---|---|
_tcserror_s |
strerror_s |
strerror_s |
_wcserror_s |
요구 사항
루틴에서 반환된 값 | 필수 헤더 |
---|---|
strerror_s , _strerror_s |
<string.h> |
_wcserror_s , __wcserror_s |
<string.h> 또는 <wchar.h> |
호환성에 대한 자세한 내용은 호환성을 참조하세요.
예시
perror
에 대한 예를 참조하세요.