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啟用,這些函式會複製相同只許多像字串符合,將目的端緩衝區空間結束,並成功傳回。

字串截斷變更受影響的函式的傳回值。 如果攔截未發生,下列函式會傳回 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

如果攔截未發生,下列函式傳回複製的數字字元,如果發生截斷 (符合原始 snprintf 函式的行為)則為 -1:

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

請參閱

參考

全域常數