分享方式:


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 對應至錯誤訊息字串,並傳回字串的指標。 和 _strerrorstrerror式實際上不會列印訊息。 若要列印,請呼叫輸出函式,例如 fprintf

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

如果 strErrMsg 傳遞為 NULL_strerror 則會傳回字串的指標。 它包含產生錯誤之最後一個連結庫呼叫的系統錯誤訊息。 如果您呼叫 __wcserror,錯誤訊息字串會以換行符 ('\n') 終止。 其他函式不會新增 '\n'。 當 不是 NULLstrErrMsg,字串會依序包含:您的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 的範例。

另請參閱

字串操作
clearerr
ferror
perror, _wperror