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中相应的格式说明符来转换自变量列表中的每个条目。 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
*/