Sdílet prostřednictvím


_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

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

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

wcstombs_s, _wcstombs_s_l

mbstowcs_s, _mbstowcs_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'

Viz také

Globální konstanty