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