strerror、_strerror、_wcserror、__wcserror
更新 : 2007 年 11 月
システム エラー メッセージ (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) );
strErrMsg を NULL として渡すと、_strerror 関数は、エラーが発生した最後のライブラリ呼び出しに関するシステム エラー メッセージを含む文字列へのポインタを返します。エラー メッセージ文字列の終端には、改行文字 (\n) が付きます。strErrMsg が NULL ではない場合、_strerror 関数は、文字列メッセージ、コロン、空白、エラーが発生した最後のライブラリ呼び出しに関するシステム エラー メッセージ、および改行文字が (この順序で) 入っている文字列へのポインタを返します。文字列メッセージの長さは 94 文字以内です。
_strerror 関数の実際のエラー番号は、errno 変数に格納されます。システム エラー メッセージは、_sys_errlist 変数から取り出されます。この変数は、エラー番号順に並べられたメッセージの配列です。_strerror は、_sys_errlist のインデックスとして errno 値を使用して、該当するエラー メッセージを出力します。_sys_nerr 変数の値は、_sys_errlist 配列の最大要素数として定義されます。正確な結果を得るには、ライブラリ ルーチンからエラーが返された直後に _strerror 関数を呼び出します。直後に呼び出さないと、その後 strerror 関数または _strerror 関数を呼び出したときに errno 値が上書きされることがあります。
_wcserrorと __wcserrorは、それぞれ strerrorと _strerror のワイド文字バージョンです。
_strerror、_wcserror、および __wcserror の各関数は、ANSI には含まれていない Microsoft 拡張機能です。移植が必要な場合は、これらの関数を使用しないでください。ANSI との互換性を維持するには、strerror 関数を使用します。
汎用テキスト ルーチンのマップ
TCHAR.H のルーチン |
_UNICODE および _MBCS が未定義の場合 |
_MBCS が定義されている場合 |
_UNICODE が定義されている場合 |
---|---|---|---|
_tcserror |
strerror |
strerror |
_wcserror |
必要条件
ルーチン |
必須ヘッダー |
---|---|
strerror |
<string.h> |
_strerror |
<string.h> |
_wcserror, __wcserror |
<string.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
「perror」の例を参照してください。