%>
打印错误消息。
语法
void perror(
const char *message
);
void _wperror(
const wchar_t *message
);
参数
message
要打印的字符串消息。
备注
perror
函数将错误消息打印到 stderr
。 _wperror
是 _perror
的宽字符版本; message
的 _wperror
参数是宽字符字符串。 除此以外,_wperror
和 _perror
的行为完全相同。
默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态。
一般文本例程映射
TCHAR.H 例程 | _UNICODE 和 _MBCS 未定义 |
_MBCS 已定义 |
_UNICODE 已定义 |
---|---|---|---|
_tperror |
perror |
perror |
_wperror |
依次打印 message
、冒号、导致错误的最后一个库调用的系统错误消息和换行符。 如果 message
为 null 指针或指向空字符串的指针,则 perror
仅打印系统错误消息。
错误数字存储在变量 errno
中(在 ERRNO.H 中定义)。 通过变量 _sys_errlist
访问系统错误消息,该变量是按错误编号排序的消息数组。 perror
打印适当的错误消息,并将 errno
值用作 _sys_errlist
的索引。 变量 _sys_nerr
的值定义为 _sys_errlist
数组中元素的最大数。
若要获得准确的结果,可在库例程返回时出现错误后立刻调用 perror
。 否则,后续调用会覆盖 errno
值。
在 Windows 操作系统中,未使用 ERRNO.H 中列出的一些 errno
值。 这些值将保留以供 UNIX 操作系统使用。 有关 Windows 操作系统使用的 errno
值列表,请参阅errno
、_doserrno
、_sys_errlist
和 _sys_nerr
。 perror
为这些平台未使用的任何 errno
值打印一个空字符串。
要求
例程 | 必需的标头 |
---|---|
perror |
<stdio.h> 或 <stdlib.h> |
_wperror |
<stdio.h> 或 <wchar.h> |
有关兼容性的详细信息,请参阅 兼容性。
库
C 运行时库的所有版本。
示例
// crt_perror.c
// compile with: /W3
/* This program attempts to open a file named
* NOSUCHF.ILE. Because this file probably doesn't exist,
* an error message is displayed. The same message is
* created using perror, strerror, and _strerror.
*/
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <share.h>
int main( void )
{
int fh;
if( _sopen_s( &fh, "NOSUCHF.ILE", _O_RDONLY, _SH_DENYNO, 0 ) != 0 )
{
/* Three ways to create error message: */
perror( "perror says open failed" );
printf( "strerror says open failed: %s\n",
strerror( errno ) ); // C4996
printf( _strerror( "_strerror says open failed" ) ); // C4996
// Note: strerror and _strerror are deprecated; consider
// using strerror_s and _strerror_s instead.
}
else
{
printf( "open succeeded on input file\n" );
_close( fh );
}
}
perror says open failed: No such file or directory
strerror says open failed: No such file or directory
_strerror says open failed: No such file or directory