_TRUNCATE
Especifica el comportamiento del truncamiento de la cadena.
#include <stdlib.h>
Comentarios
_TRUNCATE habilita el comportamiento de truncamiento cuando se pasa como parámetro de count a estas funciones:
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
Si el búfer de destino es demasiado pequeño para contener la cadena completa, el comportamiento normal de estas funciones es tratarlo como una situación de error (vea Validación de parámetros).Sin embargo, si el truncamiento de la cadena se habilita pasando _TRUNCATE, estas funciones se copiará solo tanto de la cadena que caben, dejando el búfer de destino terminada en null, y vuelva correctamente.
El truncamiento de la cadena cambia los valores devueltos de funciones afectadas.Las siguientes funciones devuelven 0 si ningún truncamiento aparece, o STRUNCATE si el truncamiento se produce:
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
Las siguientes funciones devuelven el número de caracteres copiado si ningún truncamiento aparece, o -1 si el truncamiento aparece (haciendo coincidir el comportamiento de las funciones originales de snprintf):
_snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l
vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l
Ejemplo
// 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 );
}