vfprintf ()- 將引數資料列印至串流
格式
#include <stdarg.h>
#include <stdio.h>
int vfprintf(FILE *stream, const char *format, va_list arg_ptr);語言層次
ANSI
安全執行緒
是
區分語言環境
此函數的行為可能受到現行語言環境的 LC_CTYPE 及 LC_NUMERIC 種類的影響。 如果在編譯指令上指定 LOCALETYPE (*LOCALEUCS2) 或 LOCALETYPE (*LOCALEUTF) ,則現行語言環境的 LC_UNI_CTYPE 種類也可能影響行為。 在編譯指令上指定 LOCALETYPE (*CLD) 時,無法使用此函數。 如需相關資訊,請參閱 瞭解 CCSID 及語言環境。
說明
vfprintf() 函數會將一系列字元和值格式化並寫入輸出 串流。 vfprintf() 函數的運作方式與 fprintf() 函數類似,不同之處在於 arg_ptr 指向引數清單,這些引數的數目可能因程式中的呼叫而有所不同。 這些引數應該由每一個呼叫的 va_start 起始設定。 相反地, fprintf() 函數可以有一份引數清單,但當您編譯程式時,該清單中的引數數目是固定的。
vfprintf() 函數會根據 格式中對應的格式指定元,來轉換引數清單中的每一個項目。 format 具有與 printf() 函數的格式字串相同的格式及函數。
回覆值
如果成功, vfprintf() 會傳回寫入 串流的位元組數。 如果發生錯誤,函數會傳回負值。
範例
此範例會將可變數目的字串印出至檔案 myfile。
#include <stdarg.h>
#include <stdio.h>
void vout(FILE *stream, char *fmt, ...);
char fmt1 [] = "%s %s %s\n";
int main(void)
{
FILE *stream;
stream = fopen("mylib/myfile", "w");
vout(stream, fmt1, "Sat", "Sun", "Mon");
}
void vout(FILE *stream, char *fmt, ...)
{
va_list arg_ptr;
va_start(arg_ptr, fmt);
vfprintf(stream, fmt, arg_ptr);
va_end(arg_ptr);
}
/****************** Output should be similar to: ****************
Sat Sun Mon
*/