Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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_lwcsncpy_s, _wcsncpy_s_l, , _mbsncpy_s_mbsncpy_s_l
strncat_s, , _strncat_s_lwcsncat_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, 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_lwcsncpy_s, _wcsncpy_s_l, , _mbsncpy_s_mbsncpy_s_l
strncat_s, , _strncat_s_lwcsncat_s, _wcsncat_s_l, , _mbsncat_s_mbsncat_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'