strerror_s、_strerror_s、_wcserror_s、__wcserror_sstrerror_s, _strerror_s, _wcserror_s, __wcserror_s

システムのエラー メッセージ (strerror_s_wcserror_s) またはユーザー提供のエラー メッセージを印刷する (_strerror_s_ _wcserror_s).Get a system error message (strerror_s, _wcserror_s) or print a user-supplied error message (_strerror_s, __wcserror_s). これらは、「CRT のセキュリティ機能」の説明にあるとおり、セキュリティが強化されたバージョンの strerror、_strerror、_wcserror、__wcserror です。These are versions of strerror, _strerror, _wcserror, __wcserror with security enhancements as described in Security Features in the CRT.

構文Syntax

errno_t strerror_s(
   char *buffer,
   size_t numberOfElements,
   int errnum
);
errno_t _strerror_s(
   char *buffer,
   size_t numberOfElements,
   const char *strErrMsg
);
errno_t _wcserror_s(
   wchar_t *buffer,
   size_t numberOfElements,
   int errnum
);
errno_t __wcserror_s(
   wchar_t *buffer,
   size_t numberOfElements,
   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

パラメーターParameters

バッファーbuffer
エラー文字列を格納するバッファー。Buffer to hold error string.

numberOfElementsnumberOfElements
バッファーのサイズ。Size of buffer.

errnumerrnum
エラー番号。Error number.

strErrMsgstrErrMsg
ユーザーが指定したメッセージ。User-supplied message.

戻り値Return Value

正常終了した場合は 0 を返します。失敗した場合はエラー コードを返します。Zero if successful, an error code on failure.

エラー条件Error Condtions

バッファーbuffer numberOfElementsnumberOfElements strErrMsgstrErrMsg 内容バッファーContents of buffer
NULLNULL 任意any 任意any 適用なしn/a
任意any 00 任意any 変更されないnot modified

RemarksRemarks

Strerror_s関数のマップerrnumエラー メッセージの文字列への文字列を返すバッファーします。The strerror_s function maps errnum to an error-message string, returning the string in buffer. _strerror_sはエラー番号を受け取りませんの現在の値を使用してerrnoを適切なメッセージを確認します。_strerror_s doesn't take the error number; it uses the current value of errno to determine the appropriate message. どちらもstrerror_s_strerror_s実際には、メッセージを出力します。そのため、出力関数を呼び出す必要がありますfprintf:Neither strerror_s nor _strerror_s actually prints the message: For that, you need to call an output function such as fprintf:

if (( _access( "datafile",2 )) == -1 )
{
   _strerror_s(buffer, 80);
   fprintf( stderr, buffer );
}

場合strErrMsgNULL_strerror_sで文字列を返しますバッファーライブラリの最後の呼び出しのシステム エラー メッセージを含むエラーが発生しました。If strErrMsg is NULL, _strerror_s returns a string in buffer containing the system error message for the last library call that produced an error. エラー メッセージ文字列は、改行文字 (「\n」) で終了します。The error-message string is terminated by the newline character ('\n'). 場合strErrMsgが等しくないNULL、し _strerror_sで文字列を返しますバッファー (順番に)、文字列メッセージを含む、コロン、空白、エラー、および改行文字、最後のライブラリ呼び出しのシステム エラー メッセージ。If strErrMsg is not equal to NULL, then _strerror_s returns a string in buffer containing (in order) your string message, a colon, a space, the system error message for the last library call producing an error, and a newline character. 文字列のメッセージの長さは、最大で 94 文字です。Your string message can be, at most, 94 characters long.

これらの関数は、その長さを超えた場合に、エラー メッセージを切り捨てるnumberOfElements -1。These functions truncate the error message if its length exceeds numberOfElements -1. 結果の文字列バッファーが常に null で終了します。The resulting string in buffer is always null-terminated.

実際のエラー番号 _strerror_sが変数に格納されているerrnoします。The actual error number for _strerror_s is stored in the variable errno. システム エラー メッセージは、エラー番号順のメッセージの配列である変数 _sys_errlist を使用してアクセスできます。The system error messages are accessed through the variable _sys_errlist, which is an array of messages ordered by error number. _strerror_sを使用して、適切なエラー メッセージにアクセスする、 errno変数へのインデックスとして値 _sys_errlistします。_strerror_s accesses the appropriate error message by using the errno value as an index to the variable _sys_errlist. 変数の値_sys_nerr内の要素の最大数として定義される、 _sys_errlist配列。The value of the variable _sys_nerr is defined as the maximum number of elements in the _sys_errlist array. 正確な結果を生成するために呼び出す _strerror_sライブラリ ルーチンがエラーを返した後すぐにします。To produce accurate results, call _strerror_s immediately after a library routine returns with an error. それ以外の場合、後続の呼び出しをstrerror_sまたは _strerror_sを上書きできる、 errno値。Otherwise, subsequent calls to strerror_s or _strerror_s can overwrite the errno value.

_wcserror_s_ _wcserror_sのワイド文字バージョンstrerror_s_strerror_s、それぞれします。_wcserror_s and __wcserror_s are wide-character versions of strerror_s and _strerror_s, respectively.

これらの関数では、パラメーターの検証が行われます。These functions validate their parameters. バッファーが場合NULLまたはパラメーターのサイズが 0 の場合で説明されているとおり、無効なパラメーター ハンドラーが呼び出されますパラメーターの検証です。If buffer is NULL or if the size parameter is 0, the invalid parameter handler is invoked, as described in Parameter Validation . 関数を返すかどうかは、引き続き実行が許可された、 EINVAL設定とerrnoEINVALします。If execution is allowed to continue, the functions return EINVAL and set errno to EINVAL.

_strerror_s_wcserror_s、および _ _wcserror_s ANSI 定義の一部ではないが、Microsoft の拡張機能では代わりにします。_strerror_s, _wcserror_s, and __wcserror_s are not part of the ANSI definition but are instead Microsoft extensions to it. 使用しない移植性が必要な場合です。ANSI 互換性を使用してstrerror_s代わりにします。Do not use them where portability is desired; for ANSI compatibility, use strerror_s instead.

C++ では、テンプレートのオーバーロードによってこれらの関数を簡単に使用できます。オーバーロードでは、バッファー長を自動的に推論できるため、サイズ引数を指定する必要がなくなります。In C++, using these functions is simplified by template overloads; the overloads can infer buffer length automatically, eliminating the need to specify a size argument. 詳細については、「 Secure Template Overloads」を参照してください。For more information, see Secure Template Overloads.

これらの関数のデバッグ バージョンは、最初にバッファーを 0xFD で埋めます。The debug versions of these functions first fill the buffer with 0xFD. この動作を無効にするには、_CrtSetDebugFillThreshold を使用します。To disable this behavior, use _CrtSetDebugFillThreshold.

汎用テキスト ルーチンのマップGeneric-Text Routine Mappings

TCHAR.H のルーチンTCHAR.H routine _UNICODE および _MBCS が未定義の場合_UNICODE & _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_tcserror_s_tcserror_s strerror_sstrerror_s strerror_sstrerror_s _wcserror_s_wcserror_s

必要条件Requirements

ルーチンによって返される値Routine 必須ヘッダーRequired header
strerror_s, _strerror_sstrerror_s, _strerror_s <string.h><string.h>
_wcserror_s, __wcserror_s_wcserror_s, __wcserror_s <string.h> または <wchar.h><string.h> or <wchar.h>

互換性の詳細については、「 互換性」を参照してください。For additional compatibility information, see Compatibility.

Example

perror」の例をご覧ください。See the example for perror.

関連項目See also

文字列操作String Manipulation
clearerrclearerr
ferrorferror
perror、_wperrorperror, _wperror