perror、_wperror

输出错误消息。

void perror( 
   const char *string  
); 
void _wperror( 
   const wchar_t *string  
);

参数

  • string
    输出字符串消息。

备注

perror 函数输出错误消息给 stderr_wperror是**_perror的宽字符版本;_wperror的 string 参数是宽字符字符串。 除此以外,_wperror_perror**的行为完全相同。

一般文本例程映射

TCHAR.H 例程

未定义的_UNICODE & _MBCS

已定义 _MBCS

已定义 _UNICODE

_tperror

perror

perror

_wperror

首先打印string,后面加上冒号,然后是导致错误的最后库调用的系统错误消息,最后是换行符。 如果 string 为 null 指针或指针指向空字符串,则 perror 仅打印系统错误消息。

错误号存储在变量errno (在 ERRNO.H中定义)。 系统错误信息通过变量的 _sys_errlist获取,是一组消息命令错误数字。 perror 打印相应的错误消息,它使用 errno 值作为索引传递给 _sys_errlist。 变量 _sys_nerr 的值定义为 _sys_errlist 数组中元素的最大个数。

如果要产生正确结果,在库实例返回一个错误之后立刻调用 perror。 否则,后续调用会覆盖 errno值。

在 Windows 操作系统中,不使用errno ERRNO.H中列出的那些值。 这些值保留给 UNIX 操作系统使用。 关于Windows 操作系统使用的errno 值列表,请参见 _doserrno、errno、_sys_errlist 和_sys_nerrperror打印这些平台不使用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 );
   }
}

Output

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

.NET Framework 等效项

不适用。若要调用标准 C 函数,请使用 PInvoke。有关更多信息,请参见平台调用示例

请参见

参考

进程和环境控制

clearerr

ferror

strerror、_strerror、_wcserror、__wcserror