_TRUNCATE

Określa zachowanie obcinania ciągów.

Składnia

#include <stdlib.h>

Uwagi

_TRUNCATE włącza zachowanie obcięcia po przekazaniu jako parametru count do następujących funkcji:

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

Jeśli bufor docelowy jest zbyt mały, aby przechowywać cały ciąg, normalne zachowanie tych funkcji polega na traktowaniu go jako sytuacji błędu (zobacz Walidacja parametru). Jeśli jednak obcinanie ciągów jest włączone przez przekazanie _TRUNCATE, te funkcje będą kopiować tylko tyle ciągów, jak to będzie pasować, pozostawiając bufor docelowy o wartości null zakończony i zostanie zwrócony pomyślnie.

Obcięcie ciągu zmienia zwracane wartości funkcji, których dotyczy problem. Następujące funkcje zwracają wartość 0, jeśli nie wystąpi obcięcie lub STRUNCATE jeśli wystąpi obcięcie:

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

Następujące funkcje zwracają liczbę znaków skopiowanych, jeśli nie wystąpi obcięcie, lub -1, jeśli wystąpi obcięcie (zgodne z zachowaniem oryginalnych snprintf funkcji):

_snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l

vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l

Przykład

// 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'

Zobacz też

Stałe globalne