vsprintf ()- 將引數資料列印至緩衝區

格式

#include <stdarg.h>
#include <stdio.h>
int vsprintf(char *target-string, const char *format, va_list arg_ptr);

語言層次

ANSI

安全執行緒

區分語言環境

此函數的行為可能受到現行語言環境的 LC_CTYPE 及 LC_NUMERIC 種類的影響。 如果在編譯指令上指定 LOCALETYPE (*LOCALEUCS2) 或 LOCALETYPE (*LOCALEUTF) ,則現行語言環境的 LC_UNI_CTYPE 種類也可能影響行為。 如需相關資訊,請參閱 瞭解 CCSID 及語言環境

說明

vsprintf() 函數會將一系列字元和值格式化並儲存在緩衝區 target-string中。 vsprintf() 函數的運作方式與 sprintf() 函數類似,不同之處在於 arg_ptr 指向引數清單,這些引數的數目可能因程式中的呼叫而有所不同。 這些引數應該由每一個呼叫的 va_start 函數起始設定。 相反地, sprintf() 函數可以有一份引數清單,但當您編譯程式時,該清單中的引數數目是固定的。

vsprintf() 函數會根據 格式中對應的格式指定元,來轉換引數清單中的每一個項目。 format 具有與 printf() 函數的格式字串相同的格式及函數。

回覆值

如果成功, vsprintf() 函數會傳回寫入 target-string的位元組數。 如果發生錯誤, vsprintf() 函數會傳回負值。

範例

此範例會將可變數目的字串指派給 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);
   vsprintf(string, fmt, arg_ptr);
   va_end(arg_ptr);
}
 
/******************  Output should be similar to: ****************
 
The string is:  Sat  Sun  Mon
*/

相關資訊