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
.