Bagikan melalui


_TRUNCATE

Menentukan perilaku pemotongan string.

Sintaks

#include <stdlib.h>

Keterangan

_TRUNCATE memungkinkan perilaku pemotongan ketika diteruskan sebagai count parameter ke fungsi-fungsi ini:

strncpy_s, , _strncpy_s_lwcsncpy_s, _wcsncpy_s_l, , _mbsncpy_s,_mbsncpy_s_l

strncat_s, , _strncat_s_lwcsncat_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

Jika buffer tujuan terlalu kecil untuk menahan seluruh string, perilaku normal fungsi-fungsi ini adalah memperlakukannya sebagai situasi kesalahan (lihat Validasi parameter). Namun, jika pemotongan string diaktifkan dengan meneruskan _TRUNCATE, fungsi-fungsi ini hanya akan menyalin string sebanyak yang akan pas, membiarkan buffer tujuan dihentikan null, dan berhasil dikembalikan.

Pemotongan string mengubah nilai pengembalian fungsi yang terpengaruh. Fungsi berikut mengembalikan 0 jika tidak ada pemotongan yang terjadi, atau STRUNCATE jika pemotongan terjadi:

strncpy_s, , _strncpy_s_lwcsncpy_s, _wcsncpy_s_l, , _mbsncpy_s,_mbsncpy_s_l

strncat_s, , _strncat_s_lwcsncat_s, _wcsncat_s_l, , _mbsncat_s,_mbsncat_s_l

wcstombs_s, _wcstombs_s_l

mbstowcs_s, _mbstowcs_s_l

Fungsi berikut mengembalikan jumlah karakter yang disalin jika tidak ada pemotongan yang terjadi, atau -1 jika pemotongan terjadi (cocok dengan perilaku fungsi asli snprintf ):

_snprintf_s, , _snprintf_s_l_snwprintf_s,_snwprintf_s_l

vsnprintf_s, , _vsnprintf_s_vsnprintf_s_l, , _vsnwprintf_s,_vsnwprintf_s_l

Contoh

// 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'

Lihat juga

Konstanta global