C ++ snprintf () - C ++ Pustaka Standar

Fungsi snprintf () di C ++ digunakan untuk menulis string yang diformat ke buffer string karakter.

Tidak seperti sprintf (), jumlah karakter maksimum yang dapat ditulis ke buffer ditentukan di snprintf().

snprintf () prototipe

 int snprintf (char * buffer, size_t buf_size, format const char *,…);

The snprintf()Fungsi menulis string ditunjukkan oleh Format untuk buffer. Jumlah karakter maksimal yang dapat ditulis adalah (buf_size-1).

Setelah karakter ditulis, karakter null penghentian ditambahkan. Jika buf_size sama dengan nol, tidak ada yang ditulis dan buffer mungkin berupa pointer nol.

Ini didefinisikan dalam file header.

snprintf () Parameter

  • buffer: Arahkan ke buffer string untuk menulis hasilnya.
  • buf_size: Tentukan jumlah karakter maksimum yang akan ditulis ke buffer yaitu buf_size-1.
  • format: Pointer ke string dihentikan null yang ditulis ke aliran file. Ini terdiri dari karakter bersama dengan penentu format opsional yang dimulai dengan%.

    Penentu format diganti dengan nilai variabel masing-masing yang mengikuti format string.

    Penentu format memiliki bagian-bagian berikut:

    • Tanda% terkemuka
    • Bendera: Pilihan satu atau lebih tanda yang mengubah perilaku konversi.
      • -: Rata kiri hasil di lapangan. Secara default, ini benar.
      • +: Tanda hasil dilampirkan di awal nilai, bahkan untuk hasil positif.
      • Spasi: Jika tidak ada tanda, spasi dilampirkan di awal hasil.
      • #: Bentuk alternatif dari konversi dilakukan.
      • 0: Digunakan untuk bilangan bulat dan bilangan floating point. Nol di depan digunakan untuk mengisi angka, bukan spasi.
    • Lebar: Nilai opsional * atau bilangan bulat yang digunakan untuk menentukan bidang lebar minimum.
    • Presisi: Bidang opsional yang terdiri dari a. diikuti dengan * atau integer atau tidak sama sekali untuk menentukan presisi.
    • Panjang: Pengubah panjang opsional yang menentukan ukuran argumen.
    • Penentu: Penentu format konversi. Penentu format yang tersedia adalah sebagai berikut:
      Penentu Format Deskripsi
      % Cetakan%
      c Menulis satu karakter
      s Menulis string karakter
      d atau i Mengonversi bilangan bulat bertanda menjadi representasi desimal
      Hai Mengonversi bilangan bulat tak bertanda tangan menjadi representasi oktal
      X atau x Mengonversi bilangan bulat tak bertanda menjadi representasi heksadesimal
      u Mengonversi bilangan bulat tak bertanda menjadi representasi desimal
      F atau f Mengonversi bilangan floating-point menjadi representasi desimal
      E atau e Mengonversi bilangan titik-mengambang menjadi notasi eksponen desimal
      A atau a Mengonversi bilangan titik-mengambang menjadi eksponen heksadesimal
      G atau g Mengonversi bilangan titik-mengambang menjadi notasi eksponen desimal atau desimal
      n Mengembalikan jumlah karakter yang ditulis sejauh ini oleh panggilan ini ke fungsi. Hasilnya ditulis ke nilai yang ditunjukkan oleh argumen
      p Menulis implementasi urutan karakter yang didefinisikan yang mendefinisikan sebuah pointer.

      Jadi format umum penentu format adalah: %(flags)(width)(.precision)(length)specifier

  • …: Argumen tambahan lainnya yang menentukan data yang akan dicetak. Mereka terjadi dalam urutan sesuai dengan penentu format.

snprintf () Mengembalikan nilai

Jika berhasil, snprintf()fungsi mengembalikan jumlah karakter yang akan ditulis untuk buffer yang cukup besar tidak termasuk karakter null yang mengakhiri. Jika gagal, ia mengembalikan nilai negatif.

Keluaran dianggap ditulis sepenuhnya jika dan hanya jika nilai yang dikembalikan bukan negatif dan kurang dari buf_size.

Contoh: Bagaimana fungsi snprintf () bekerja

 #include #include using namespace std; int main() ( char buffer(100); int retVal, buf_size = 100; char name() = "Max"; int age = 23; retVal = snprintf(buffer, buf_size, "Hi, I am %s and I am %d years old", name, age); if (retVal> 0 && retVal < buf_size) ( cout << buffer << endl; cout << "Number of characters written = " << retVal << endl; ) else cout << "Error writing to buffer" << endl; return 0; )

Saat Anda menjalankan program, hasilnya adalah:

 Hai, Saya Max dan saya berumur 23 tahun Jumlah karakter yang ditulis = 34

Artikel yang menarik...