C ++ snprintf () - Perpustakaan Standard C ++

Fungsi snprintf () dalam C ++ digunakan untuk menulis rentetan berformat ke penyangga rentetan watak.

Tidak seperti sprintf (), bilangan watak maksimum yang boleh ditulis ke penyangga ditentukan dalam snprintf().

prototaip snprintf ()

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

Yang snprintf()fungsi menulis rentetan yang ditunjukkan oleh format untuk penampan. Bilangan maksimum watak yang boleh ditulis adalah (buf_size-1).

Selepas watak ditulis, watak null penamat ditambahkan. Sekiranya buf_size sama dengan sifar, tidak ada yang ditulis dan penyangga mungkin penunjuk nol.

Ia ditakrifkan dalam fail tajuk.

snprintf () Parameter

  • penyangga: Penunjuk ke penyangga rentetan untuk menulis hasilnya.
  • buf_size: Tentukan bilangan aksara maksimum yang akan ditulis untuk penyangga iaitu buf_size-1.
  • format: Penunjuk ke rentetan nol yang dihentikan yang ditulis ke aliran fail. Ia terdiri daripada watak-watak bersama dengan penentu format pilihan bermula dengan%.

    Penentu format digantikan oleh nilai pemboleh ubah masing-masing yang mengikuti rentetan format.

    Penentu format mempunyai bahagian berikut:

    • Tanda% terkemuka
    • Bendera: Pilihan satu atau lebih bendera yang mengubah tingkah laku penukaran.
      • -: Kiri membenarkan hasilnya di lapangan. Secara lalai ia dibenarkan.
      • +: Tanda hasil dilampirkan pada awal nilai, bahkan untuk hasil positif.
      • Ruang: Sekiranya tidak ada tanda, ruang dilampirkan pada awal hasil.
      • #: Satu bentuk penukaran alternatif dilakukan.
      • 0: Digunakan untuk nombor bulat dan bilangan bulat. Nol sifar digunakan untuk menambah angka dan bukannya ruang.
    • Lebar: Nilai * atau integer pilihan yang digunakan untuk menentukan medan lebar minimum.
    • Ketepatan: Medan pilihan yang terdiri daripada a. diikuti oleh * atau bilangan bulat atau tidak ada yang menentukan ketepatan.
    • Panjang: Pengubah panjang pilihan yang menentukan ukuran argumen.
    • Penentu: Penentu format penukaran. Penentu format yang ada adalah seperti berikut:
      Penentu Format Penerangan
      % Cetakan%
      c Menulis watak tunggal
      s Menulis rentetan watak
      d atau i Menukar bilangan bulat yang ditandakan menjadi perwakilan perpuluhan
      o Menukar bilangan bulat yang tidak bertanda kepada perwakilan oktal
      X atau x Menukar bilangan bulat yang tidak bertanda menjadi perwakilan heksadesimal
      awak Menukar bilangan bulat yang tidak bertanda menjadi perwakilan perpuluhan
      F atau f Menukar nombor titik terapung ke perwakilan perpuluhan
      E atau e Menukar nombor titik terapung ke notasi eksponen perpuluhan
      A atau a Menukar nombor titik terapung ke eksponen heksadesimal
      G atau g Menukar nombor titik terapung ke notasi eksponen perpuluhan atau perpuluhan
      n Mengembalikan jumlah watak yang ditulis sejauh ini oleh panggilan ini ke fungsi. Hasilnya ditulis berdasarkan nilai yang ditunjukkan oleh hujah
      hlm Menulis urutan watak yang ditentukan pelaksanaan yang menentukan penunjuk.

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

  • …: Argumen tambahan lain yang menentukan data yang akan dicetak. Mereka berlaku mengikut urutan mengikut penentu format.

snprintf () Nilai pulangan

Sekiranya berjaya, snprintf()fungsi mengembalikan bilangan watak yang akan ditulis untuk penyangga yang cukup besar tidak termasuk watak null yang berakhir. Pada kegagalan ia mengembalikan nilai negatif.

Keluaran dianggap ditulis sepenuhnya jika dan hanya jika nilai yang dikembalikan tidak negatif dan kurang daripada buf_size.

Contoh: Bagaimana fungsi snprintf () berfungsi

 #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; )

Semasa anda menjalankan program, outputnya adalah:

 Hai, saya Max dan saya berumur 23 tahun Bilangan watak yang ditulis = 34

Artikel menarik...