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
*/

相關資訊