C,处理变量参数函数

Mik*_*ike 6 c variables arguments

假设我想做这样的事情

void my_printf(char *fmt,...) {
 char buf[big enough];
 sprintf(buf,fmt,...);  
}
Run Code Online (Sandbox Code Playgroud)

将可变数量的参数直接传递给具有接受变量参数的函数的正确方法是什么?

Joh*_*itb 9

sprintf有一个va_list叫做的形式vsprintf.将va_list你构造本地传递给它作为最后一个参数.

void my_printf(char *fmt,...) {
 va_list ap;
 va_start(ap, fmt);

 char buf[big enough];
 vsprintf(buf,fmt,ap);

 va_end(ap);
}
Run Code Online (Sandbox Code Playgroud)

  • 有效标题是"<stdarg.h>". (3认同)