_TRUNCATE

Spécifie le comportement de troncation de chaîne.

Syntaxe

#include <stdlib.h>

Notes

_TRUNCATE active le comportement de troncation quand il est passé en tant que 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

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 la mémoire tampon de destination est trop petite pour contenir toute la chaîne, le comportement normal de ces fonctions consiste à le traiter comme une situation d’erreur (voir validation du paramètre). Toutefois, si la troncation de chaîne est activée en passant _TRUNCATE, ces fonctions copient uniquement le maximum possible de la chaîne, en arrêtant la mémoire tampon de destination sur une valeur Null et génèrent une valeur de retour correcte.

La troncation de chaîne modifie les valeurs de retour des fonctions affectées. Les fonctions suivantes retournent 0 si aucune troncature ne se produit, ou STRUNCATE si une 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

wcstombs_s, _wcstombs_s_l

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

Voir aussi

Constantes globales