strerror, _strerror, _wcserror, __wcserror

取得系統錯誤訊息字串 (strerror_wcserror),或是將使用者提供的錯誤訊息字串格式化 (_strerror__wcserror)。 這些函式有更安全的版本可供使用;請參閱 、、 _wcserror_s_strerror_s__wcserror_sstrerror_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