_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 );
}
  
  

请参见

参考

全局常数