_TRUNCATE

Gibt das Abschneideverhalten von Zeichenfolgen an.

Syntax

#include <stdlib.h>

Hinweise

_TRUNCATE aktiviert das Abschneideverhalten, wenn es als count-Parameter an folgende Funktionen übergeben wird:

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

Wenn der Zielpuffer zu klein ist, um die gesamte Zeichenfolge zu halten, besteht das normale Verhalten dieser Funktionen darin, ihn als Fehlersituation zu behandeln (siehe Parameterüberprüfung). Wenn jedoch das Abschneiden der Zeichenfolge durch das Übergeben von _TRUNCATE aktiviert wird, kopieren diese Funktionen nur so viel von der Zeichenfolge wie passt, sodass der Zielpuffer auf NULL endet, und kehren erfolgreich zurück.

Das Abschneiden der Zeichenfolge ändert die Rückgabewerte der betroffenen Funktionen. Die folgenden Funktionen geben 0 zurück, wenn kein Abschneiden erfolgt, und STRUNCATE, wenn abgeschnitten wird:

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

Die folgenden Funktionen geben die Anzahl der kopierten Zeichen zurück, wenn keine Abkürzung auftritt, oder -1, wenn abgeschnitten wird (entsprechend dem Verhalten der ursprünglichen snprintf Funktionen):

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

Siehe auch

Globale Konstanten