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
实例
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
//va_list , va_start, va_end是用于解决输出变参问题的一组宏定义
void vp_write(const char *format, ...)
{
va_list args; //指向参数的指针
va_start(args, format);//初始化va_list定义的变量
vprintf(format, args);
va_end(args); //结束可变参数的获取
}
void vf_write(FILE *stream, char *format, ...)
{
va_list args;
va_start(args, format);
vfprintf(stream, format, args);
va_end(args);
}
void vs_write(char *buf, char *format , ...)
{
va_list args;
va_start(args, format);
vsprintf(buf,format,args);
va_end(args);
}
void vsn_write(char *buf, int size, char *format, ...)
{
va_list args;
va_start(args,format);
vsnprintf(buf,size,format,args);
va_end(args);
}
int main()
{
FILE *fp;
char buf[128];
char nbuf[128];
bzero(buf,0);
bzero(nbuf,0);
char v_family[] = "from v_family list";
fp = fopen("log.txt","a+");
if(fp == NULL)
perror("fopen error");
vp_write("vp_write start with %d %s\n ",1,v_family);
vf_write(fp, "vf_write start with %d %s\n",2,v_family);
vs_write(buf,"vs_write start with %d %s\n",3,v_family);
vsn_write(nbuf,sizeof(nbuf),"vsn_write start with %d %s\n",4,v_family);
vp_write("the final buf:\n %s",buf);
vp_write("the final nbuf:\n %s",nbuf);
return 0;
}