_TRUNCATE
Określa zachowanie obcięcie ciągu.
#include <stdlib.h>
Uwagi
_TRUNCATEUmożliwia zachowanie obcinania, gdy dane są przekazywane jako count parametru do tych funkcji:
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
Jeśli bufor docelowy jest zbyt mały, aby pomieścić cały ciąg, normalne zachowanie tych funkcji jest traktowania jej jako wystąpienia błędu (zobacz Sprawdzanie poprawności parametru).Jednakże jeśli włączono obcięcie ciągu przekazując _TRUNCATE, tych funkcji spowoduje skopiowanie tylko tyle danych, ciąg znaków, ile zmieoci się, pozostawiając buforze docelowym zakończony znakiem null i pomyślnie powrócić.
Obcięcie ciągu zmienia wartości zwrócone przez funkcje usterce.Następujące funkcje zwracają wartość 0, jeśli nie zostanie obcięte, lub STRUNCATE występują obcinania:
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
Następujące funkcje zwraca liczbę znaków, jeśli nie zostanie obcięte kopiowany lub -1, jeśli obcinania występuje (dopasowanie na zachowanie oryginalnej funkcji sprintf):
_snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l
vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l
Przykład
// 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 );
}