vprintf ()- 列印引數資料

格式

#include <stdarg.h>
#include <stdio.h>
int vprintf(const char *format, va_list arg_ptr);

語言層次

ANSI

安全執行緒

區分語言環境

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

說明

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

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

回覆值

如果成功, vprintf() 函數會傳回寫入 stdout的位元組數。 如果發生錯誤, vprintf() 函數會傳回負值。 錯誤碼的值可以設為 ETRUNC

範例

此範例會將字串的變數數目印出至 stdout
#include <stdarg.h>
#include <stdio.h>
 
void vout(char *fmt, ...);
char fmt1 [] = "%s  %s  %s   %s   %s \n";
 
int main(void)
{
   FILE *stream;
   stream = fopen("mylib/myfile", "w");
 
   vout(fmt1, "Mon", "Tues", "Wed", "Thurs", "Fri");
}
 
void vout(char *fmt, ...)
{
   va_list arg_ptr;
 
   va_start(arg_ptr, fmt);
   vprintf(fmt, arg_ptr);
   va_end(arg_ptr);
}
 
/******************  Output should be similar to:  ****************
 
Mon  Tues  Wed   Thurs   Fri
*/

相關資訊