Bagikan melalui


_scprintf_p, _scprintf_p_l, _scwprintf_p, _scwprintf_p_l

Mengembalikan jumlah karakter dalam string yang diformat, dengan kemampuan untuk menentukan urutan parameter yang digunakan dalam string format.

Sintaks

int _scprintf_p(
   const char *format [,
   argument] ...
);
int _scprintf_p_l(
   const char *format,
   _locale_t locale [,
   argument] ...
);
int _scwprintf_p (
   const wchar_t *format [,
   argument] ...
);
int _scwprintf_p _l(
   const wchar_t *format,
   _locale_t locale [,
   argument] ...
);

Parameter

format
String kontrol format.

argument
Argumen opsional.

locale
Lokal yang akan digunakan.

Nilai hasil

Mengembalikan jumlah karakter yang akan dihasilkan jika string akan dicetak atau dikirim ke file atau buffer menggunakan kode pemformatan yang ditentukan. Nilai yang dikembalikan tidak menyertakan karakter null yang dihentikan. _scwprintf_p melakukan fungsi yang sama untuk karakter lebar.

Perbedaan antara _scprintf_p dan _scprintf adalah yang _scprintf_p mendukung parameter posisi, yang memungkinkan menentukan urutan di mana argumen digunakan dalam string format. Untuk informasi selengkapnya, lihat Parameter Posisi printf_p.

Jika format adalah NULL penunjuk, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi-fungsi ini mengembalikan -1 dan diatur errno ke EINVAL.

Untuk informasi tentang kode kesalahan ini dan lainnya, lihat errno, , _doserrno_sys_errlist, dan _sys_nerr.

Keterangan

Masing-masing argument (jika ada) dikonversi sesuai dengan spesifikasi format yang sesuai di format. Format terdiri dari karakter biasa dan memiliki bentuk dan fungsi yang sama dengan format argumen untuk printf.

Versi fungsi-fungsi ini dengan _l akhiran identik kecuali mereka menggunakan parameter lokal yang diteruskan alih-alih lokal utas saat ini.

Penting

Pastikan itu format bukan string yang ditentukan pengguna.

Mulai Windows 10 versi 2004 (build 19041), printf keluarga fungsi mencetak angka titik mengambang yang persis dapat diwakili sesuai dengan aturan IEEE 754 untuk pembulatan. Di versi Windows sebelumnya, angka titik pecahan yang persis dapat diwakili yang berakhiran '5' akan selalu dibulatkan. IEEE 754 menyatakan bahwa mereka harus membulatkan ke digit terdekat bahkan (juga dikenal sebagai "Pembulatan Bankir"). Misalnya, dan printf("%1.0f", 1.5)printf("%1.0f", 2.5) harus membulatkan ke 2. Sebelumnya, 1,5 akan membulatkan ke 2 dan 2,5 akan dibulatkan ke 3. Perubahan ini hanya memengaruhi angka yang tepat yang dapat diwakili. Misalnya, 2,35 (yang, ketika diwakili dalam memori, lebih dekat ke 2,3500000000000000008) terus membulatkan ke atas hingga 2,4. Pembulatan yang dilakukan oleh fungsi-fungsi ini sekarang juga menghormati mode pembulatan titik mengambang yang ditetapkan oleh fesetround. Sebelumnya, pembulatan selalu memilih FE_TONEAREST perilaku. Perubahan ini hanya memengaruhi program yang dibuat menggunakan Visual Studio 2019 versi 16.2 dan yang lebih baru. Untuk menggunakan perilaku pembulatan titik mengambang warisan, tautkan dengan 'legacy_stdio_float_rounding.obj'.

Pemetaan rutin teks generik

Rutinitas Tchar.h _UNICODE dan _MBCS tidak ditentukan _MBCS Didefinisikan _UNICODE Didefinisikan
_sctprintf_p _scprintf_p _scprintf_p _scwprintf_p
_sctprintf_p_l _scprintf_p_l _scprintf_p_l _scwprintf_p_l

Persyaratan

Rutin Header yang diperlukan
_scprintf_p, _scprintf_p_l <stdio.h>
_scwprintf_p, _scwprintf_p_l <stdio.h> atau <wchar.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Baca juga

Streaming I/O
_scprintf, _scprintf_l, _scwprintf, _scwprintf_l
_printf_p, _printf_p_l, _wprintf_p, _wprintf_p_l