Aracılığıyla paylaş


_TRUNCATE

Dize kesilme davranışını belirtir.

#include <stdlib.h>

Notlar

_TRUNCATEkesme davranış olarak geçirildiğinde sağlar count parametresi bu işlevler için:

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

mbstowcs_s, _mbstowcs_s_l

mbsrtowcs_s

wcstombs_s, _wcstombs_s_l

wcsrtombs_s

_snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l

vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l

Bu işlevlerin normal davranış hedef arabelleğin tüm dizeyi tutmak için çok küçük ise, bir hata durumu olarak kabul olduğu (bkz: Parametre doğrulama). Ancak, dize kesilme ileterek etkinse, _TRUNCATE, bu işlevler yalnızca sığabilecek dizesinin boş sonlandırılmış hedef arabelleğin bırakarak sığacak kadar kopyalayacak ve başarılı bir şekilde geri dönün.

Dize kesilme etkilenen işlevler dönüş değerlerini değiştirir. Aşağıdaki işlevler 0 döndürür hiçbir kesme ortaya çıkarsa, ya da STRUNCATE kesilmesi durumunda:

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

wcstombs_s, _wcstombs_s_l

mbstowcs_s, _mbstowcs_s_l

Kesme (özgün snprintf işlevleri davranışını eşleme) oluşursa aşağıdaki işlevleri hiçbir kesme oluşursa, kopyalanan karakterler veya -1 numaranız:

_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 );
}
      

Ayrıca bkz.

Başvuru

Genel sabitler