获取系统错误消息字符串(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 的示例。