_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'
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro