_TRUNCATE
Specifica il comportamento del troncamento della stringa.
#include <stdlib.h>
Note
_TRUNCATE abilita il comportamento del troncamento una volta passato come count i parametri a queste funzioni:
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
Se il buffer di destinazione è troppo piccolo per utilizzare l'intera stringa, il comportamento normale di queste funzioni è di considerarlo un caso di errore (vedere Convalida dei parametri).Tuttavia, se il troncamento della stringa è abilitato passando _TRUNCATE, queste funzioni copieranno solo da parte della stringa CLDB S TRUNCATION come, lasciando il buffer di destinazione con terminazione null e restituire correttamente.
Il troncamento della stringa modifica i valori restituiti delle funzioni interessate.le seguenti funzioni restituiscono 0 se nessun troncamento si verifica, o STRUNCATE se il troncamento si verifica l'evento:
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
Le seguenti funzioni restituisce il numero di caratteri copiato se nessun troncamento si verifica, oppure -1 se il troncamento si verifica (corrispondente al comportamento delle funzioni originali di snprintf):
_snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l
vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l
Esempio
// 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 );
}