strerror, _strerror, _wcserror, __wcserror

获取系统错误消息字符串(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 将返回指向字符串的指针。 包含生成错误的最后一个库调用的系统错误消息。 如果调用 __wcserror,则错误消息字符串由换行符 ('\n') 终止。 其他函数不添加 '\n'。 当 strErrMsg 不是 NULL 时,字符串将按顺序包含: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