概述
这个库,主要是用于不限制参数个数,void Prtf(int n , …) 第一个参数是参数个数 (除去第一个参数),
使用时,申明一个 va_list vl , va_start(vl , n)初始化vl ,来检索后面的参数 , va_arg(vl , int) 检索下一个,
整型参数。
va_end (vl,) 结束使用。
#include <stdio.h>
#include <stdarg.h>
void Prtf(int n , ...);
int main(void){
Prtf(3,1,2,3);
return 0;
}
void Prtf(int n ,...){
int i ;
printf("printf value list\n");
va_list vl;
int tmp;
va_start(vl,n);
for(i = 0; i < n ; i++){
tmp = va_arg(vl,int);
printf("%d\n",tmp);
}
printf("\t%d\n",n);
}
有趣的函数
- vsprintf(const char * format , …)
1 #include <stdio.h>
2 #include <stdarg.h>
3 void Prtf(const char * fmt , ...);
4 int main(void){
5 Prtf("Hello %s\n", "world");
6 return 0;
7 }
8
9 void Prtf(const char * fmt , ...)
10 {
11 printf("printf value list\n");
12 va_list vl;
13 char buf[50];
14 va_start(vl,fmt);
15 vsprintf(buf , fmt , vl);
16 printf("%s",buf);
17 va_end(vl);
18 }