取得系統錯誤訊息字串 (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 的範例。