Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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_lwcsncpy_s, , _mbsncpy_s_mbsncpy_s_l
strncat_s, , _strncat_s_l, _wcsncat_s_lwcsncat_s, , _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 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_lwcsncpy_s, , _mbsncpy_s_mbsncpy_s_l
strncat_s, , _strncat_s_l, _wcsncat_s_lwcsncat_s, , _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 );
}
truncation occurred!
'1234'