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


_TRUNCATE

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

#include <stdlib.h>

Заметки

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

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

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

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

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

Следующие функции возвращают количество копированных символов при отсутствии усечения или -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 );
}
  

См. также

Ссылки

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