获取系统错误消息字符串(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> |
%> | <string.h> |
有关兼容性的详细信息,请参阅 兼容性。
示例
请参阅 perror
的示例。