Fungsi vfprintf () di C ++ digunakan untuk menulis string yang diformat ke aliran file.
vfprintf () prototipe
int vfprintf (FILE * stream, format const char *, va_list vlist);
The vfprintf()
Fungsi menulis string ditunjuk oleh format yang ke aliran sungai berkas. Format string mungkin berisi penentu format yang dimulai dengan% yang diganti dengan nilai variabel yang diteruskan sebagai daftar vlist.
Ini didefinisikan dalam file header.
vfprintf () Parameter
- stream: Aliran file keluaran untuk menulis hasil.
- 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
- vlist: Daftar argumen yang berisi data untuk ditulis.
vfprintf () Nilai kembali
Jika berhasil, vfprintf()
fungsi mengembalikan jumlah karakter yang ditulis. Jika gagal, ia mengembalikan nilai negatif.
Contoh: Bagaimana fungsi vfprintf () bekerja
#include #include void write(FILE* fp, const char *fmt,… ) ( va_list args; va_start(args, fmt); vfprintf(fp, fmt, args); va_end(args); ) int main () ( FILE *fp = fopen("data.csv","w"); char name(5)(50) = ("John","Harry","Kim","Yuan","Laxmi"); int age(5) = (13,41,26,21,32); write(fp, "%s,%s", "name", "age"); for (int i=0; i<5; i++) write(fp, "%s,%d", name(i), age(i)); return 0; )
Saat Anda menjalankan program, berikut ini akan ditulis ke file data.csv:
nama, usia John, 13 Harry, 41 Kim, 26 Yuan, 21 Laxmi, 32