Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melepasi Bilangan Pembolehubah Argumen kepada printf/sprintf?
Melalukan Argumen Pembolehubah ke printf/sprintf
Dalam pengaturcaraan, selalunya timbul keperluan untuk memformat dan memaparkan teks atau data panjang berubah-ubah, tugas yang biasa dikendalikan oleh fungsi seperti printf dan sprintf. Walau bagaimanapun, fungsi ini biasanya memerlukan bilangan argumen tetap. Bagaimanakah kita boleh menghantar bilangan argumen yang berubah-ubah kepada fungsi ini?
Penyelesaian: Menggunakan Fungsi va_*
Bahasa C menyediakan satu set fungsi yang diawali dengan "va_ " yang membolehkan kami bekerja dengan senarai hujah panjang boleh ubah. Fungsi ini termasuk va_start, va_arg dan va_end.
Untuk menghantar pembolehubah bilangan argumen ke printf atau sprintf, kita boleh menggunakan langkah berikut:
Contoh:
#include <stdio.h> #include <stdarg.h> class MyClass { public: void Error(const char* format, ...) { va_list argptr; va_start(argptr, format); vfprintf(stderr, format, argptr); va_end(argptr); } };
Dalam contoh ini, kaedah Ralat mengambil rentetan format dan nombor pembolehubah argumen. Ia menggunakan va_arg untuk mendapatkan semula argumen dan kemudian memanggil vfprintf untuk memformat dan mengeluarkan teks kepada stderr.
Nota:
Walaupun boleh menggunakan vsprintf dan bukannya vfprintf, ia tidak disyorkan kerana ia mudah terdedah kepada limpahan penimbal.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melepasi Bilangan Pembolehubah Argumen kepada printf/sprintf?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!