Поделиться через


perror, _wperror

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

Синтаксис

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 является пустым указателем или указателем на пустую строку, то perror выводит только системное сообщение об ошибке.

Номер ошибки хранится в переменной errno (определенной в ERRNO. H). Системные сообщения об ошибках обращаются через переменную _sys_errlist, которая является массивом сообщений, упорядоченных по номеру ошибки. Функция perror выводит соответствующее сообщение об ошибке, используя значение errno в качестве индекса для _sys_errlist. Значение переменной _sys_nerr определяется как максимальное количество элементов в массиве _sys_errlist .

Для точных результатов вызов сразу perror после подпрограммы библиотеки возвращает ошибку. В противном случае последующие вызовы могут перезаписать значение errno.

В операционной системе Windows некоторые значения errno, указанные в файле ERRNO.H, не используются. Эти значения зарезервированы для использования операционной системой UNIX. Смerrno. список _sys_errlist_doserrnoзначений, используемых операционной системой Windows, и _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 );
   }
}
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

См. также

Управление процессами и средой
clearerr
ferror
strerror, , _strerror_wcserror__wcserror