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


strerror, _strerror, _wcserror, __wcserror

Получает системную строку сообщения об ошибке (strerror, _wcserror) или форматирует пользовательскую строку сообщения об ошибке (_strerror, __wcserror). Существуют более безопасные версии этих функций; см. раздел strerror_s, _strerror_s, _wcserror_s, __wcserror_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 возвращает указатель на строку, которая содержит системное сообщение об ошибке для последнего вызова библиотеки, который создал ошибку. Строка сообщения об ошибке оканчивается символом новой строки ('\n'). Если значение strErrMsg не равно NULL, _strerror возвращает указатель на строку, содержащую (по порядку) сообщение строки, двоеточие, пробел, системное сообщение об ошибке для последнего вызова библиотеки, создавшего ошибку, и символ новой строки. Длина сообщения строки не должна превышать 94 символа.

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

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

_strerror, _wcserror и __wcserror не входят в определение ANSI. Они являются расширениями Майкрософт, и мы не рекомендуем использовать их в ситуациях, когда требуется создать переносимый код. Для совместимости с ANSI вместо них рекомендуется использовать strerror.

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

Универсальное текстовое сопоставление функций

Подпрограмма TCHAR.H

_UNICODE и _MBCS не определены

_MBCS определено

_UNICODE определено

_tcserror

strerror

strerror

_wcserror

Требования

Подпрограмма

Обязательный заголовок

strerror

<string.h>

_strerror

<string.h>

_wcserror, __wcserror

<string.h>

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

Пример

См. пример для perror.

Эквивалент в .NET Framework

System::Exception::Message

См. также

Ссылки

Управление строками (CRT)

clearerr

ferror

perror, _wperror