_TRUNCATE
Určuje chování zkrácení řetězce.
#include <stdlib.h>
Poznámky
_TRUNCATEumožňuje zkrácení chování při předávání jako count parametru na tyto funkce:
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
Pokud cílové vyrovnávací paměti je příliš malá pro uložení celého řetězce, normální chování těchto funkcí je zpracován jako chyba (viz Ověření parametru).Nicméně pokud je povoleno zkrácení řetězce předáním _TRUNCATE, tyto funkce budou zkopírovány pouze tolik vejde opouští cílové vyrovnávací paměti zakončený hodnotou null, řetězce a úspěšně.
Zkrácení řetězce změní vrácené hodnoty funkce obsahující tuto chybu.Následující funkce vrátí 0 Pokud k žádnému zkrácení, nebo STRUNCATE Pokud dojde k zkrácení:
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
Následující funkce vrátí počet znaků, které jsou zkopírovány, pokud k žádnému zkrácení nebo -1 Pokud dojde k zkrácení (odpovídající chování původní funkce snprintf):
_snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l
vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l
Příklad
// 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 );
}