strerror_s, _strerror_s, _wcserror_s, __wcserror_s

Sistem hata iletisi (strerror_s, _wcserror_s) alma veya kullanıcı tarafından sağlanan bir hata iletisini (_strerror_s, __wcserror_s) yazdırma. Bu işlevler, CRT'deki strerrorGüvenlik özellikleri bölümünde açıklandığı gibi güvenlik geliştirmeleri içeren , _strerror, _wcserror, __wcserrorsürümleridir.

Sözdizimi

errno_t strerror_s(
   char *buffer,
   size_t sizeInBytes,
   int errnum
);
errno_t _strerror_s(
   char *buffer,
   size_t sizeInBytes,
   const char *strErrMsg
);
errno_t _wcserror_s(
   wchar_t *buffer,
   size_t sizeInWords,
   int errnum
);
errno_t __wcserror_s(
   wchar_t *buffer,
   size_t sizeInWords,
   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

Parametreler

buffer
Hata dizesini tutmak için arabellek.

sizeInBytes
Arabellekteki bayt sayısı.

sizeInWords
Arabellekteki sözcük sayısı.

errnum
Hata numarası.

strErrMsg
Kullanıcı tarafından sağlanan ileti.

Dönüş değeri

Başarılı olursa sıfır, hata durumunda bir hata kodu.

Hata koşulları

buffer sizeInBytes/sizeInWords strErrMsg İçeriği buffer
NULL herhangi bir herhangi bir yok
herhangi bir 0 herhangi bir değiştirilmedi

Açıklamalar

strerror_s İşlev iş parçacığı açısından güvenlidir.

strerror_s İşlev, içinde dizesini döndüren bir hata iletisi dizesiyle buffereşlererrnum. _strerror_s hata numarasını almaz; uygun iletiyi belirlemek için geçerli değerini errno kullanır. İleti veya tarafından strerror_s _strerror_syazdırılmaz veya görüntülenmez. İletinin çıktısını almak için gibi fprintfbir çıkış işlevi çağırmanız gerekir:

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

ise strErrMsg NULL, _strerror_s içinde hata oluşturan son kitaplık çağrısı için sistem hata iletisini içeren bir dize buffer döndürür. değerine eşit NULL_strerror_s değilsestrErrMsg, içinde dize iletinizi içeren (sırasıyla) bir dizebuffer, iki nokta üst üste, boşluk, hata oluşturan son kitaplık çağrısı için sistem hata iletisi döndürür. Dize iletiniz en fazla 94 karakter uzunluğunda olabilir.

Bu işlevler, uzunluğu arabellek boyutunu aşıyorsa hata iletisini keserek - 1. içindeki buffer sonuç dizesi her zaman null olarak sonlandırılır.

için _strerror_s gerçek hata numarası değişkeninde errnodepolanır. Sistem hata iletilerine, hata numarasına göre sıralanmış bir ileti dizisi olan değişkeni _sys_errlistüzerinden erişilir. _strerror_s değerini değişkeninin errno _sys_errlistdizini olarak kullanarak uygun hata iletisine erişir. değişkeninin _sys_nerr değeri, dizideki _sys_errlist en fazla öğe sayısı olarak tanımlanır. Doğru sonuçlar elde etmek için, kitaplık yordamı bir hatayla döndürdikten hemen sonra çağrısında _strerror_s bulunur. Aksi takdirde, sonraki çağrılar strerror_s veya _strerror_s değerinin errno üzerine yazabilir.

_wcserror_sve __wcserror_s sırasıyla ve _strerror_s'nin strerror_s geniş karakterli sürümleridir.

Bu işlevler parametrelerini doğrular. Arabellek NULL veya boyut parametresi 0 ise, Parametre doğrulama bölümünde açıklandığı gibi geçersiz parametre işleyicisi çağrılır. Yürütmenin devam etmesi için izin verilirse, işlevler geri döner EINVAL ve olarak EINVALayarlanırerrno.

_strerror_s, _wcserror_sve __wcserror_s ansi tanımının bir parçası değildir, bunun yerine microsoft uzantılarıdır. Bunları taşınabilirlik istenen yerde kullanmayın; ANSI uyumluluğu için kullanın strerror_s .

C++'ta bu işlevlerin kullanılması şablon aşırı yüklemeleriyle basitleştirilir; aşırı yüklemeler arabellek uzunluğunu otomatik olarak çıkararak boyut bağımsız değişkeni belirtme gereksinimini ortadan kaldırır. Daha fazla bilgi için bkz . Güvenli şablon aşırı yüklemeleri.

Bu işlevlerin hata ayıklama kitaplığı sürümleri önce arabelleği 0xFE ile doldurur. Bu davranışı devre dışı bırakmak için kullanın _CrtSetDebugFillThreshold.

Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.

Genel metin yordamı eşlemeleri

TCHAR.H yordamı _UNICODE ve _MBCS tanımlanmadı _MBCS tanımlanan _UNICODE tanımlanan
_tcserror_s strerror_s strerror_s _wcserror_s

Gereksinimler

Yordam Gerekli başlık
strerror_s, _strerror_s <string.h>
_wcserror_s, __wcserror_s <string.h> veya <wchar.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Örnek

örneğine perrorbakın.

Ayrıca bkz.

Dize işleme
clearerr
ferror
perror, _wperror