次の方法で共有


strerror_strerror_wcserror__wcserror

システム エラー メッセージの文字列 (strerror_wcserror) を取得します。または、ユーザーが指定したエラー メッセージの文字列 (_strerror__wcserror) を書式設定します。 これらの関数のセキュリティを強化したバージョンを使用できます。「strerror_s_strerror_s_wcserror_s__wcserror_s」を参照してください。

構文

char * strerror(
   int errnum );

char * _strerror(
   const char *strErrMsg );

wchar_t * _wcserror(
   int errnum );

wchar_t * __wcserror(
   const wchar_t *strErrMsg );

パラメーター

errnum
エラー番号。

strErrMsg
ユーザーが指定したメッセージ。

戻り値

これらすべての関数によって、ランタイムが所有するスレッド ローカル ストレージ バッファー内のエラー メッセージ文字列へのポインターが返されます。 後で同じスレッドで呼び出すと、この文字列が上書きされる可能性があります。

解説

strerror 関数は、エラー メッセージの文字列に errnum をマップし、その文字列へのポインターを返します。 strerror関数と_strerror関数は、実際にはメッセージを出力しません。 印刷するには、 fprintfなどの出力関数を呼び出します。

if (( _access( "datafile", 2 )) == -1 )
   fprintf( stderr, _strerror(NULL) );

strErrMsgNULLとして渡された場合、_strerrorは文字列へのポインターを返します。 これには、エラーを生成した最後のライブラリの呼び出しに対するシステム エラー メッセージが含まれます。 __wcserrorを呼び出すと、エラー メッセージ文字列は改行文字 ('\n') で終了します。 他の関数は '\n'を追加しません。 strErrMsgNULLされていない場合、文字列には、strErrMsg文字列、コロン、スペース、システム エラー メッセージが順番に含まれます。 文字列メッセージの長さは、最大 94 文字 (狭い (_strerror) 文字またはワイド (__wcserror) 文字のいずれかです。

_strerrorの実際のエラー番号は、変数errnoに格納されます。 正確な結果を生成するには、ライブラリ ルーチンからエラーが返された直後に _strerror を呼び出します。 それ以外の場合、後でライブラリ ルーチンを呼び出しても、 errno 値が上書きされる可能性があります。

_wcserror、および __wcserror は、それぞれ、strerror、および _strerror のワイド文字バージョンです。

_strerror_wcserror、および __wcserror は Microsoft 固有であり、Standard C ライブラリの一部ではありません。 移植可能なコードが必要な場合、これらを使用することはお勧めしません。 Standard C の互換性を確保するために、代わりに strerror を使用してください。

エラー文字列を取得するには、非推奨のマクロの_sys_errlist_sys_nerr、および非推奨の内部関数の__sys_errlist__sys_nerrではなく、strerrorまたは_wcserrorすることをお勧めします。

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。

汎用テキスト ルーチンのマップ

TCHAR.H のルーチン _UNICODE_MBCS が定義されていない _MBCS が定義されている _UNICODE が定義されている
_tcserror strerror strerror _wcserror

要件

ルーチンによって返される値 必須ヘッダー
strerror <string.h>
_strerror <string.h>
_wcserror, __wcserror <string.h>

互換性の詳細については、「 Compatibility」を参照してください。

perror の例を参照してください。

関連項目

文字列操作
clearerr
ferror
perror, _wperror