Udostępnij za pośrednictwem


_TRUNCATE

Określa zachowanie obcinania ciąg.

#include <stdlib.h>

Uwagi

_TRUNCATEUmożliwia zachowanie obcinania, gdy dane są przekazywane jako count parametr 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

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

Jeśli bufor docelowy jest zbyt mały, aby pomieścić cały ciąg, normalne zachowanie tych funkcji jest traktowanie go jako wystąpienia błędu (zobacz Sprawdzanie poprawności parametru).Jednakże jeśli obcinania ciąg jest włączony, przekazując _TRUNCATE, funkcje te zostaną skopiowane tylko tyle ciąg znaków, ile się zmieści, pozostawiając bufor docelowy zakończonym znakiem null i pomyślnie powrócić.

Obcinanie ciągu zmienia wartości zwracane funkcji, których dotyczy luka.Następujące funkcje zwracają wartość 0, jeśli nie zostanie obcięte, lub STRUNCATE Jeśli obcinania występują:

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

Następujące funkcje zwraca liczbę znaków, jeśli nie zostanie obcięte kopiowany lub -1 Jeśli obcinania występują (dopasowanie 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 );
}
  
  

Zobacz też

Informacje

Globalnych stałych