Compartir por


_TRUNCATE

Especifica el comportamiento de truncamiento de cadenas.

Sintaxis

#include <stdlib.h>

Comentarios

_TRUNCATE habilita el comportamiento de truncamiento cuando se pasa como el parámetro 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

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

Si el búfer de destino es demasiado pequeño para contener toda la cadena, el comportamiento normal de estas funciones es tratarlo como una situación de error (consulte Validación de parámetros). En cambio, si el truncamiento de cadenas se habilita pasando _TRUNCATE, estas funciones solo copiarán la parte de la cadena que quepa, dejando el búfer de destino finalizado en null y se devuelve correctamente.

El truncamiento de cadenas cambia los valores devueltos de las funciones afectadas. Las siguientes funciones devuelven 0 si no se produce ningún truncamiento o STRUNCATE si se produce el truncamiento:

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

Las siguientes funciones devuelven el número de caracteres copiados si no se produce ningún truncamiento o -1 si se produce truncamiento (lo que coincide con el comportamiento de las funciones snprintf originales):

_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 );
}
truncation occurred!
'1234'

Vea también

Constantes globales