vsnprintf ()- 將引數資料列印至緩衝區
格式
#include <stdarg.h>
#include <stdio.h>
int vsnprintf(char *target-string, size_t n, const char *format, va_list arg_ptr);
語言層次
ANSI
安全執行緒
是
區分語言環境
此函數的行為可能受到現行語言環境的 LC_CTYPE 及 LC_NUMERIC 種類的影響。 如果在編譯指令上指定 LOCALETYPE (*LOCALEUCS2) 或 LOCALETYPE (*LOCALEUTF) ,則現行語言環境的 LC_UNI_CTYPE 種類也可能影響行為。 如需相關資訊,請參閱 瞭解 CCSID 及語言環境。
說明
vsnprintf(
) 函數會將一系列字元和值格式化並儲存在緩衝區 target-string 中。 vsnprintf()
函數的運作方式與 snprintf()
函數一樣,不同之處在於 arg_ptr 指向引數清單,這些引數的號碼在程式中的呼叫之間可能有所不同。 這些引數應該由每一個呼叫的 va_start
函數來起始設定。 相反地, snprintf()
函數可以有一份引數清單,但當您編譯程式時,該清單中的引數數目是固定的。
vsnprintf()
函數會根據 格式中對應的格式指定元,來轉換引數清單中的每一個項目。 format 具有與 printf()
函數的格式字串相同的格式及函數。
回覆值
vsnprintf()
函數會傳回在陣列中寫入的位元組數,不計算結尾空值字元。
範例
此範例會將可變數目的字串指派給 string ,並列印產生的字串。
#include <stdarg.h>
#include <stdio.h>
void vout(char *string, char *fmt, ...);
char fmt1 [] = "%s %s %s\n";
int main(void)
{
char string[100];
vout(string, fmt1, "Sat", "Sun", "Mon");
printf("The string is: %s\n", string);
}
void vout(char *string, char *fmt, ...)
{
va_list arg_ptr;
va_start(arg_ptr, fmt);
vsnprintf(string, 8, fmt, arg_ptr);
va_end(arg_ptr);
}
/****************** Output should be similar to: ****************
The string is: Sat Su
*/