_TRUNCATE
Specifica il comportamento di troncamento della stringa.
Sintassi
#include <stdlib.h>
Osservazioni:
_TRUNCATE
abilita il comportamento di troncamento una volta passato come parametro count
a tali 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 contenere l'intera stringa, il comportamento normale di queste funzioni consiste nel considerarlo come una situazione di errore (vedere Convalida dei parametri). Tuttavia, se il troncamento della stringa è abilitato passando _TRUNCATE
, queste funzioni copieranno solamente la quantità massima possibile della stringa, lasciando il buffer di destinazione con terminazione null e restituiranno in modo corretto.
Il troncamento della stringa modifica i valori restituiti delle funzioni interessate. Le seguenti funzioni restituiscono 0 se il troncamento non si verifica o STRUNCATE
se il troncamento si verifica:
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 funzioni seguenti restituiscono il numero di caratteri copiati se non si verifica alcun troncamento oppure -1 se si verifica il troncamento (corrispondente al comportamento delle funzioni originali 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 );
}
truncation occurred!
'1234'