_TRUNCATE
Gibt Zeichenfolgenabschneidenverhalten an.
#include <stdlib.h>
Hinweise
_TRUNCATE aktiviert Abschneidenverhalten, wenn Sie count als Parameter an diese Funktionen übergeben werden:
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
Wenn der den Zielpuffer zu klein ist, wird die gesamte Zeichenfolge aufzunehmen, ist das normale Verhalten dieser Funktionen, es als Fehlerkonstellation zu behandeln (siehe Parametervalidierung). Wenn Zeichenfolgenabschneiden aktiviert ist, indem _TRUNCATE übergibt, kopieren Sie diese Funktionen nur so viel der Zeichenfolge, z anpassen, den Zielpuffer auf NULL enden verlassend und erfolgreich Sie zurückkehren.
Eine Abschneidenänderungen Sie die Rückgabewerte der betroffenen Funktionen auf. Die folgenden Funktionen geben 0, wenn kein Kürzung auftritt, oder STRUNCATE zurück, wenn das Abschneiden auftritt:
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
Die folgenden Funktionen geben der Anzahl der kopierten Zeichen, wenn kein Kürzung auftritt, oder -1 zurück, wenn das Abschneiden auftritt (das Verhalten der ursprünglichen snprintf Funktionen abgleichend):
_snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l
vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l
Beispiel
// 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 );
}