_TRUNCATE
Spécifie le comportement de la troncation de chaîne.
#include <stdlib.h>
Notes
_TRUNCATE active le comportement de la troncation quand il est transmis comme le paramètre 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 traiter la chaîne entière, le fonctionnement normal de ces fonctions est de traiter ça comme un cas d'erreur (consultez Validation de paramètre). Toutefois, si la troncation de chaîne est activée en passant _TRUNCATE, ces fonctions copieront uniquement autant de la chaîne que ce qui peut tenir, en laissant la mémoire tampon de destination terminée par le caractère NULL, et retourneront correctement.
Chaîne de troncation modifie les 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 au comportement des fonctions d'origine 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 );
}