_TRUNCATE
Gibt Zeichenfolgen abschneiden verhalten.
#include <stdlib.h>
Hinweise
_TRUNCATE das Abschneiden aktiviert, wenn Sie als Parameter count auf 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 Zielpuffer zu klein ist, die gesamte Zeichenfolge aufzunehmen, ist das normale Verhalten dieser Funktionen es als Fehlerkonstellation zu behandeln (siehe Parametervalidierung).Wenn jedoch Zeichenfolgen abschneiden aktiviert ist, indem _TRUNCATEkopiert, übergibt diese Funktionen nur so viele, wie der Zeichenfolge passt, den Zielpuffer auf NULL endende verlassend und erfolgreich beendet werden.
Zeichenfolgen abschneiden ändert die Rückgabewerte der betreffenden Features.Die folgenden Funktionen geben 0, wenn kein Abschneiden auftritt, oder STRUNCATE zurück, wenn das Abschneiden stattfindet:
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 die Anzahl der kopierten Zeichen, wenn kein Abschneiden 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 );
}