_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 将字符串截断,这些函数将要复制适合相同多字符串,保留目标缓冲区以 Null 终止,并返回成功。

字符串截断更改受影响的函数的返回值。 如果没有截断,则函数返回 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 );
}
  

请参见

参考

全局常量