strerror_s, _strerror_s, _wcserror_s, __wcserror_s

시스템 오류 메시지(strerror_s, _wcserror_s)를 가져오거나, 사용자가 제공한 오류 메시지(_strerror_s, __wcserror_s)를 출력합니다. 이러한 함수는 CRT_wcserror_strerror__wcserrorstrerror 보안 기능에 설명된 대로 향상된 보안 기능을 갖춘 버전입니다.

구문

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 콜론, 공백, 오류를 생성한 마지막 라이브러리 호출에 대한 시스템 오류 메시지가 포함된 문자열을 순서대로 반환 bufferNULL합니다. 문자열 메시지는 94자 이하여야 합니다.

이러한 함수는 길이가 버퍼 크기인 1을 초과하는 경우 오류 메시지를 자립니다. buffer의 결과 문자열은 항상 null로 종료됩니다.

실제 오류 번호 _strerror_s 는 변수 errno에 저장됩니다. 시스템 오류 메시지는 오류 번호로 정렬된 메시지 배열인 변수 _sys_errlist를 통해 액세스됩니다. _strerror_serrno 값을 변수 _sys_errlist에 대한 인덱스로 사용하여 적합한 오류 메시지에 액세스합니다. 변수 _sys_nerr 의 값은 배열의 최대 요소 수로 _sys_errlist 정의됩니다. 정확한 결과를 생성하려면 라이브러리 루틴이 오류와 함께 반환된 직후에 호출 _strerror_s 합니다. 그렇지 않으면 strerror_s 또는 _strerror_s에 대한 후속 호출이 errno 값을 덮어쓸 수 있습니다.

_wcserror_s__wcserror_s은 각각 strerror_s_strerror_s의 와이드 문자 버전입니다.

이러한 함수는 해당 함수 매개 변수의 유효성을 검사합니다. 버퍼이거나 NULL 크기 매개 변수가 0이면 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 계속해서 실행하도록 허용된 경우 이 함수는 EINVAL을 반환하며 errnoEINVAL로 설정합니다.

_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참조하세요.

참고 항목

문자열 조작
clearerr
ferror
perror, _wperror