Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Dize kesme davranışını belirtir.
Sözdizimi
#include <stdlib.h>
Açıklamalar
_TRUNCATE bu işlevlere parametre olarak count geçirildiğinde kesme davranışını etkinleştirir:
strncpy_s, _strncpy_s_l, wcsncpy_s, , _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l
strncat_s, _strncat_s_l, wcsncat_s, , _wcsncat_s_l, _mbsncat_s, _mbsncat_s_l
_snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l
vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, , _vsnwprintf_s_l
Hedef arabellek tüm dizeyi barındıramayacak kadar küçükse, bu işlevlerin normal davranışı bunu bir hata durumu olarak ele almaktır (bkz . Parametre doğrulama). Ancak, dize kesilmesi geçirilerek _TRUNCATEetkinleştirilirse, bu işlevler dizenin yalnızca sığdığı kadar kopyalanır ve hedef arabellek null olarak sonlandırılır ve başarıyla döndürülecektir.
Dize kesilmesi, etkilenen işlevlerin dönüş değerlerini değiştirir. Kesme gerçekleşmezse veya STRUNCATE kesilme oluşursa aşağıdaki işlevler 0 döndürür:
strncpy_s, _strncpy_s_l, wcsncpy_s, , _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l
strncat_s, _strncat_s_l, wcsncat_s, , _wcsncat_s_l, _mbsncat_s, _mbsncat_s_l
Aşağıdaki işlevler, kesme gerçekleşmezse kopyalanan karakter sayısını veya kesme gerçekleşirse -1 değerini döndürür (özgün snprintf işlevlerin davranışıyla eşleşir):
_snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l
vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, , _vsnwprintf_s_l
Örnek
// crt_truncate.c
#include <stdlib.h>
#include <errno.h>
int main()
{
char src[] = "1234567890";
char dst[5];
errno_t err = strncpy_s(dst, _countof(dst), src, _TRUNCATE);
if ( err == STRUNCATE )
printf( "truncation occurred!\n" );
printf( "'%s'\n", dst );
}
truncation occurred!
'1234'