_TRUNCATE
Určuje chování zkrácení řetězce.
Syntaxe
#include <stdlib.h>
Poznámky
_TRUNCATE
povolí chování zkrácení při předání jako parametr těmto count
funkcím:
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 je cílová vyrovnávací paměť příliš malá na uložení celého řetězce, je normální chování těchto funkcí považovat za chybovou situaci (viz ověření parametru). Pokud je však zkrácení řetězce povoleno předáním _TRUNCATE
, tyto funkce zkopírují pouze tolik řetězce, jak se přizpůsobí, ponechá cílovou vyrovnávací paměť null-ukončena a vrátí se úspěšně.
Zkrácení řetězce změní návratové hodnoty ovlivněných funkcí. Následující funkce vrátí hodnotu 0, pokud nedojde k žádnému zkrácení nebo STRUNCATE
pokud dojde ke 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ů zkopírovaných v případě, že nedojde k žádnému zkrácení, nebo -1, pokud dojde ke zkrácení (odpovídající chování původních snprintf
funkcí):
_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 );
}
truncation occurred!
'1234'