_TRUNCATE
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 _TRUNCATE
etkinleş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'