_TRUNCATE
spécifie le comportement de troncation de chaîne.
#include <stdlib.h>
Notes
_TRUNCATE active le comportement de troncation une fois passé comme paramètre d' count à ces fonctions :
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 la mémoire tampon de destination est trop petite pour contenir la chaîne entière, le comportement normal de ces fonctions est de le traiter comme un cas d'erreur (consultez Validation des paramètres).Toutefois, si la troncation de chaîne est activée en passant _TRUNCATE, ces fonctions copieront uniquement autant de la chaîne que tient, en quittant la mémoire tampon de destination se terminant par null, et retournez avec succès.
Modifications de troncation de chaîne des valeurs de retour des fonctions affectées.Les fonctions suivantes retournent 0 si aucune troncation ne se produit, ou STRUNCATE si la troncation se produit :
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
Les fonctions suivantes retournent le nombre de caractères copiés si aucune troncation ne se produit, ou -1 si la troncation se produit (correspondant à le comportement des fonctions d'origine de snprintf) :
_snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l
vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l
Exemple
// 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 );
}