_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を渡すことにより、有効になっている場合、これらの関数には、正常に返します。収まるように文字列までしかコピーし、変換先バッファーを null で終わる。
切り捨て変更の影響を受ける関数の戻り値文字列です。 次の関数は、切り捨てがある切り捨てが実行されていない場合、または STRUNCATE : 0 を返します。
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 );
}