strerror
、 、 _strerror
、 _wcserror
__wcserror
取得系統錯誤訊息字串 (strerror
、_wcserror
),或是將使用者提供的錯誤訊息字串格式化 (_strerror
、__wcserror
)。 這些函式有更安全的版本可供使用;請參閱 、、_wcserror_s
_strerror_s
、。strerror_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
則會傳回字串的指標。 它包含產生錯誤之最後一個連結庫呼叫的系統錯誤訊息。 如果您呼叫 __wcserror
,錯誤訊息字串會以換行符 ('\n'
) 終止。 其他函式不會新增 '\n'
。 當 不是 NULL
時strErrMsg
,字串會依序包含:您的strErrMsg
字串、冒號、空格、系統錯誤訊息。 您的字串訊息最多可以有94個字元,以窄字元或_strerror
寬字元__wcserror
為單位。
的實際錯誤號碼 _strerror
會儲存在變數 errno
中。 若要產生精確的結果,請在連結庫例程傳回錯誤之後立即呼叫 _strerror
。 否則,稍後對連結庫例程的呼叫可能會覆寫 errno
值。
_wcserror
和 __wcserror
分別是寬字元版本的 strerror
和 _strerror
。
_strerror
、 _wcserror
和 __wcserror
是Microsoft特定,不是標準 C 連結庫的一部分。 建議您不要在想要可攜式程式代碼的地方使用這些程序代碼。 針對標準 C 相容性,請改用 strerror
。
若要取得錯誤字串,我們建議 strerror
或 _wcserror
取代已被取代的 _sys_errlist
巨集,以及 _sys_nerr
已被取代的內部 __sys_errlist
函式和 __sys_nerr
。
根據預設,此函式的全域狀態會限定於應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態。
一般文字常式對應
TCHAR.H 常式 | _UNICODE 和 _MBCS 未定義 |
_MBCS 已定義 |
_UNICODE 已定義 |
---|---|---|---|
_tcserror |
strerror |
strerror |
_wcserror |
需求
常式 | 必要的標頭 |
---|---|
strerror |
<string.h> |
_strerror |
<string.h> |
_wcserror , __wcserror |
<string.h> |
如需相容性詳細資訊,請參閱相容性。
範例
請參閱 perror
的範例。