Share via


_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 );
}
truncation occurred!
'1234'

另請參閱

全域常數