perror, _wperror

Вывод сообщения об ошибке.

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

Параметры

  • string
    Строковое сообщение для печати.

Заметки

Функция perror выводит сообщение об ошибке в stderr. _wperror — версия _perror для расширенных символов; аргумент string для _wperror — строка расширенных символов. В противном случае поведение _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. Смотрите раздел _doserrno, errno, _sys_errlist и _sys_nerr для списка errno используемых операционной системой Windows. 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 );
   }
}

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