Share via


_scprintf, _scprintf_l, _scwprintf, _scwprintf_l

Mengembalikan jumlah karakter dalam string yang diformat.

Sintaks

int _scprintf(
   const char *format [,
   argument] ...
);
int _scprintf_l(
   const char *format,
   _locale_t locale [,
   argument] ...
);
int _scwprintf(
   const wchar_t *format [,
   argument] ...
);
int _scwprintf_l(
   const wchar_t *format,
   _locale_t locale [,
   argument] ...
);

Parameter

format
String kontrol format.

argument
Argumen opsional.

locale
Lokal yang akan digunakan.

Untuk informasi selengkapnya, lihat Sintaks spesifikasi format.

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 melakukan fungsi yang sama untuk karakter lebar.

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 _scprintf _scprintf _scwprintf
_sctprintf_l _scprintf_l _scprintf_l _scwprintf_l

Persyaratan

Rutin Header yang diperlukan
_scprintf, _scprintf_l <stdio.h>
_scwprintf, _scwprintf_l <stdio.h> atau <wchar.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

// crt__scprintf.c

#define _USE_MATH_DEFINES

#include <stdio.h>
#include <math.h>
#include <malloc.h>

int main( void )
{
   int count;
   int size;
   char *s = NULL;

   count = _scprintf( "The value of Pi is calculated to be %f.\n",
                      M_PI);

   size = count + 1; // the string will need one more char for the null terminator
   s = malloc(sizeof(char) * size);
   sprintf_s(s, size, "The value of Pi is calculated to be %f.\n",
                      M_PI);
   printf("The length of the following string will be %i.\n", count);
   printf("%s", s);
   free( s );
}
The length of the following string will be 46.
The value of Pi is calculated to be 3.141593.

Baca juga

Streaming I/O
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l
scanf, _scanf_l, wscanf, _wscanf_l
sscanf, _sscanf_l, swscanf, _swscanf_l
vprintf Fungsi