_TRUNCATE
Especifica o comportamento de truncamento da cadeia de caracteres.
Sintaxe
#include <stdlib.h>
Comentários
_TRUNCATE
habilita o comportamento de truncamento quando passado como o parâmetro count
para essas funções:
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 o buffer de destino for muito pequeno para conter a cadeia de caracteres inteira, o comportamento normal dessas funções será tratá-lo como uma situação de erro (consulte Validação de parâmetro). No entanto, se o truncamento da cadeia de caracteres for habilitado ao passar _TRUNCATE
, essas funções copiarão da cadeia de caracteres somente o que couber, deixando o buffer de destino com terminação nula e retornarão com êxito.
O truncamento da cadeia de caracteres altera os valores de retorno das funções afetadas. As seguintes funções retornarão 0 se não ocorrer o truncamento ou STRUNCATE
se ocorrer o truncamento:
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
As seguintes funções retornarão o número de caracteres copiados se não ocorrer o truncamento ou -1 se o truncamento ocorrer (correspondendo ao comportamento das funções snprintf
originais):
_snprintf_s
, _snprintf_s_l
, _snwprintf_s
, _snwprintf_s_l
vsnprintf_s
, _vsnprintf_s
, _vsnprintf_s_l
, _vsnwprintf_s
, _vsnwprintf_s_l
Exemplo
// 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'