Поделиться через


_TRUNCATE

Определяет поведение усечения строки.

Синтаксис

#include <stdlib.h>

Замечания

_TRUNCATE разрешает усечение, если передается в качестве параметра count этим функциям:

strncpy_s, , _strncpy_s_l_wcsncpy_s_lwcsncpy_s_mbsncpy_s,_mbsncpy_s_l

strncat_s, , _strncat_s_l_wcsncat_s_lwcsncat_s_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

Если целевой буфер слишком мал для хранения всей строки, нормальное поведение этих функций заключается в том, чтобы рассматривать его как ситуацию ошибки (см . проверку параметров). Однако, если разрешено усечение строки путем передачи _TRUNCATE, эти функции копируют столько символов, сколько возможно, завершая буфер нулевым символом, и успешно завершаются.

Усечение строки меняет возвращаемые значения соответствующих функций. Следующие функции возвращают 0, если усечение не происходит, или STRUNCATE, если усечение происходит.

strncpy_s, , _strncpy_s_l_wcsncpy_s_lwcsncpy_s_mbsncpy_s,_mbsncpy_s_l

strncat_s, , _strncat_s_l_wcsncat_s_lwcsncat_s_mbsncat_s,_mbsncat_s_l

wcstombs_s, _wcstombs_s_l

mbstowcs_s, _mbstowcs_s_l

Следующие функции возвращают количество символов, скопированных при отсутствии усечения, или -1, если усечение происходит (сопоставление поведения исходных snprintf функций):

_snprintf_s, , _snprintf_s_l_snwprintf_s_snwprintf_s_l

vsnprintf_s, , _vsnprintf_s_vsnprintf_s_l, _vsnwprintf_s_vsnwprintf_s_l

Пример

// 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'

См. также

Глобальные константы