函数 printf的正确声明形式为:
int printf(char *fmt, ...)
其中,省略号表示参数表中参数的数量和类型是可变的。
va_list 类型用于声明一个变量,该变量将依次引用各参数。
宏va_start将ap初始化为指向第一个无名参
数的指针。在使用ap 之前,该宏必须被调用一次。参数表必须至少包括一个有名参数,
va_start将最后一个有名参数作为起点。
每次调用va_arg,该函数都将返回一个参数,并将ap 指向下一个参数。va_arg 使用
一个类型名来决定返回的对象类型、指针移动的步长。
最后,必须在函数返回之前调用va_end,以完成一些必要的清理工作。
关于:
int putchar (int c)
The putchar function is equivalent to putc with stdout as the value of the stream
argument.
所以其可以依次不断地从stdout中取出字符到字符串指针中。
int putc (int c, FILE *stream)
成功:返回c 失败:返回EOF
res:
The C Programming Language--可变参数的函数
原文:http://www.cnblogs.com/qianzhilan/p/4273118.html