Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Meluluskan Bilangan Pembolehubah Argumen ke printf/sprintf dalam C dan C ?

Bagaimana untuk Meluluskan Bilangan Pembolehubah Argumen ke printf/sprintf dalam C dan C ?

Barbara Streisand
Lepaskan: 2024-11-28 17:09:11
asal
841 orang telah melayarinya

How to Pass a Variable Number of Arguments to printf/sprintf in C and C  ?

Melalukan Argumen Pembolehubah ke Printf/Sprintf

Dalam C dan C , fungsi printf dan sprintf digunakan untuk pencetakan dan penulisan berformat. Fungsi ini membenarkan spesifikasi rentetan format yang mengawal cara argumen seterusnya dicetak. Walau bagaimanapun, mungkin terdapat keadaan di mana bilangan hujah yang akan dicetak tidak diketahui terlebih dahulu. Ini menimbulkan persoalan tentang cara menghantar nombor pemboleh ubah argumen kepada fungsi ini.

Penyelesaian Menggunakan vfprintf

Pustaka C standard menyediakan fungsi vfprintf, yang boleh mengendalikan bilangan argumen yang berubah-ubah. Ia memerlukan dua hujah mandatori:

  • format: Penunjuk kepada rentetan format.
  • argptr: Va_list yang memegang pembolehubah hujah.

Coretan kod berikut menunjukkan cara menggunakan vfprintf:

void Error(const char* format, ...)
{
    va_list argptr;
    va_start(argptr, format);
    vfprintf(stderr, format, argptr);
    va_end(argptr);
}
Salin selepas log masuk

Dalam contoh ini, fungsi Ralat mengambil rentetan format sebagai argumen pertama dan nombor arbitrari argumen tambahan. Argumen ini diakses melalui va_list, yang dimulakan menggunakan va_start. Fungsi vfprintf kemudian dipanggil dengan rentetan format dan va_list. Akhir sekali, va_end digunakan untuk membersihkan senarai_va.

Atas ialah kandungan terperinci Bagaimana untuk Meluluskan Bilangan Pembolehubah Argumen ke printf/sprintf dalam C dan C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan