strerror, _strerror, _wcserror, __wcserror

Получает системную строку сообщения об ошибке (strerror, _wcserror) или форматирует пользовательскую строку сообщения об ошибке (_strerror, __wcserror). Доступны более безопасные версии этих функций; см. , _wcserror_s_strerror_s, __wcserror_s.strerror_s

Синтаксис

char * strerror(
   int errnum );

char * _strerror(
   const char *strErrMsg );

wchar_t * _wcserror(
   int errnum );

wchar_t * __wcserror(
   const wchar_t *strErrMsg );

Параметры

errnum
Номер ошибки.

strErrMsg
Пользовательское сообщение.

Возвращаемое значение

Все эти функции возвращают указатель на строку сообщения об ошибке в буфере локального хранилища потока, принадлежаемом среде выполнения. Последующие вызовы в том же потоке могут перезаписать эту строку.

Замечания

Функция strerror сопоставляет errnum со строкой сообщения об ошибке и возвращает указатель на строку. _strerror Функции strerror и функции на самом деле не печатают сообщение. Чтобы распечатать, вызовите выходную функцию, например fprintf:

if (( _access( "datafile", 2 )) == -1 )
   fprintf( stderr, _strerror(NULL) );

Если strErrMsg передается как NULL, _strerror возвращает указатель на строку. Он содержит системное сообщение об ошибке для последнего вызова библиотеки, создавшего ошибку. При вызове __wcserrorстрока сообщения об ошибке завершается символом новой строки ('\n'). Другие функции не добавляются '\n'. Если strErrMsg это не NULLтак, строка содержит в порядке: strErrMsg строка, двоеточие, пробел, системное сообщение об ошибке. Строковое сообщение может быть длиной не более 94 символов в узких (_strerror) или широких (__wcserror) символах.

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

_wcserror и __wcserror — это версии strerror и _strerror с расширенными символами.

_strerror, _wcserrorи __wcserror являются определенными корпорацией Майкрософт, а не частью стандартной библиотеки C. Мы не рекомендуем использовать их, где требуется переносимый код. Вместо этого используйте strerror для обеспечения совместимости C уровня "Стандартный".

Чтобы получить строки ошибок, рекомендуется strerror или _wcserror вместо устаревших макросов и _sys_nerr устаревших внутренних _sys_errlist функций __sys_errlist и __sys_nerr.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

Сопоставления подпрограмм универсального текста

Подпрограмма TCHAR.H _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_tcserror strerror strerror _wcserror

Требования

Маршрут Обязательный заголовок
strerror <string.h>
_strerror <string.h>
_wcserror, __wcserror <string.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

Пример

Пример см. в примере perror.

См. также

Обработка строк
clearerr
ferror
perror, _wperror