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


strerror_s, _strerror_s, _wcserror_s, __wcserror_s

Получено сообщение об ошибке системы (strerror_s" _wcserror_s) или напечатать сообщение об ошибке (передаваемый пользователем_strerror_s" __wcserror_s).Эти версии strerror, _strerror, _wcserror, __wcserror со службами расширений безопасности, как описано в разделе Средства безопасности в CRT.

errno_t strerror_s(
   char *buffer,
   size_t numberOfElements,
   int errnum 
);
errno_t _strerror_s(
   char *buffer,
   size_t numberOfElements,
   const char *strErrMsg 
);
errno_t _wcserror_s(
   wchar_t *buffer,
   size_t numberOfElements,
   int errnum 
);
errno_t __wcserror_s(
   wchar_t *buffer,
   size_t numberOfElements,
   const wchar_t *strErrMsg 
);
template <size_t size>
errno_t strerror_s(
   char (&buffer)[size],
   int errnum 
); // C++ only
template <size_t size>
errno_t _strerror_s(
   char (&buffer)[size],
   const char *strErrMsg 
); // C++ only
template <size_t size>
errno_t _wcserror_s(
   wchar_t (&buffer)[size],
   int errnum 
); // C++ only
template <size_t size>
errno_t __wcserror_s(
   wchar_t (&buffer)[size],
   const wchar_t *strErrMsg 
); // C++ only

Параметры

  • buffer
    Буфер для хранения строки ошибки.

  • numberOfElements
    Размер буфера.

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

  • strErrMsg
    Передаваемый пользователем сообщение.

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

Нуль, если успешно, код ошибки при сбое.

Условия возникновения ошибок

buffer

numberOfElements

strErrMsg

Содержимое buffer

NULL

any

any

нет

any

0

any

не было

Заметки

strerror_s сопоставления функции errnum в строку сообщения об ошибке, возвращая указатель на строку._strerror_s не принимает номер ошибки. он использует текущее значение errno указать соответствующее сообщение.Ни одного strerror_s ни _strerror_s фактически печатает сообщение: Для этого необходимо вызвать функцию как output fprintf.

if (( _access( "datafile",2 )) == -1 )
{
   _strerror_s(buffer, 80);
   fprintf( stderr, buffer );
}

If strErrMsg существует NULL" _strerror_s возвращает указатель на строку, содержащую сообщение об ошибке системы для последнего вызова библиотеки, вызвавшего ошибку.Строка сообщения об ошибке завершается символом перевода строки (\ n ").If strErrMsg не равно NULLпосле этого _strerror_s возвращает указатель на строку, содержащую (в порядке сообщения строки), двоеточие, пробел, сообщение о системной ошибке для последнего вызова библиотеки формирование ошибку, а символ перевода строки.Ваше сообщение строки может быть не более 94 символов.

Эти функции усекают сообщение об ошибке, если его длина превышает numberOfElements -1.Результирующая строка in buffer всегда null-завершит.

Фактический номер ошибки _strerror_s хранит в переменной errno.Системные сообщения об ошибках осуществляется через переменную _sys_errlistмассив сообщений, приказал номеру ошибки._strerror_s обращается к соответствующее сообщение об ошибке с помощью errno значение переменной в качестве индекса _sys_errlist.Значение переменной _sys_nerr определяет, как максимальное количество элементов в _sys_errlist массив.Предоставить явные вызов _strerror_s сразу после библиотечная процедура возвращает с ошибкой.В противном случае последующие вызовы strerror_s OR _strerror_s можно переписать errno значения.

_wcserror_sи __wcserror_sверсия расширенных символов strerror_sи _strerror_sсоответственно.

Эти функции проверяют их параметры.Если буфер NULL или, если параметр размера 0, то вызывается обработчик параметра, недопустимо, как описано в разделе Проверка параметров .Если выполнение может быть продолжено, то функции возвращают EINVAL и errno В EINVAL.

_strerror_s, _wcserror_s, и __wcserror_sне находится часть определения ANSI вместо этого расширения microsoft.Не используйте их где переносимость пожелана; для совместимости ANSI, используйтеstrerror_sвместо этого.

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

Отладочной версии этих функций сначала заполняют буфер с 0xFD.Чтобы отключить эту реакция на событие, воспользуйтесь _CrtSetDebugFillThreshold.

Сопоставления подпрограммы Родов-Текста

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

_MBCS не заданные _UNICODE &

Указанный символ _MBCS

Указанный _UNICODE

_tcserror_s

strerror_s

strerror_s

_wcserror_s

Требования

Процедура

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

strerror_s, _strerror_s

<string.h>

_wcserror_s, __wcserror_s

<string.h> OR <wchar.h>

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

Пример

См. пример perror.

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

System:: исключение:: Сообщение

См. также

Ссылки

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

clearerr

ferror

perror, _wperror