vsnprintf函数
头文件:#include <stdarg.h>
函数原型:int vsnprintf(char *str, size_t size, const char *format, va_list ap);
函数说明:将可变参数格式化输出到一个字符数组
参数:str输出到的数组,size指定大小,防止越界,format格式化参数,ap可变参数列表函数用法
举例:
#include <stdio.h>
#include <stdarg.h>
void test(const char * format, ...);
int main(void)
{
test("%d_%s", 6, "abc");
return 0;
}
void test(const char * format, ...)
{
char buf[4069];
va_list list;
va_start(list, format);
vsnprintf(buf, 4069, format, list);
va_end(list);
printf("%s\n", buf);
}
输出结果为:6_abc
vfprintf()函数
头文件:#include <stdarg.h>
函数原型:
int vfprintf(FILE *stream, const char *format, va_list arg);
函数说明:
fprintf()会根据参数format字符串来转换并格式化数据,然后将结果输出到参数stream指定的文件中,直到出现字符串结束(‘\0’)为止。
C语言printf家族函数的成员:
#include <stdio.h>
int
printf
(
const
char
*format, ...);
//输出到标准输出
int
fprintf
(
FILE
*stream,
const
char
*format, ...);
//输出到文件
int
sprintf
(
char
*str,
const
char
*format, ...);
//输出到字符串str中
int
snprintf(
char
*str,
size_t
size,
const
char
*format, ...);
//按size大小输出到字符串str中
以下函数功能与上面的一一对应相同,只是在函数调用时,把上面的...对应的一个个变量用
va_list
调用所替代。在函数调用前ap要通过
va_start
()宏来动态获取。
#include <stdarg.h>
int
vprintf
(
const
char
*format,
va_list
ap);
int
vfprintf
(
FILE
*stream,
const
char
*format,
va_list
ap);
int
vsprintf
(
char
*str,
const
char
*format,
va_list
ap);
int
vsnprintf(
char
*str,
size_t
size,
const
char
*format,
va_list
ap);