_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
_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
Следующие функции возвращают количество символов, скопированных при отсутствии усечения, или -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'
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по