可变参数不打印

时间:2018-06-25 09:41:43

标签: c printf variadic-functions

#define TRACE2(args)   TraceDebug args;

void TraceDebug ( const char * format, ... );

void TraceDebug ( const char * format, ... )
{
  static char buffer[256];
  va_list args;
  va_start (args, format);
  vsprintf (buffer,format, args);
  va_end (args);
}


int main(void)
{
    TRACE2(("ece %d is of %d students.", 1,33));
    return 0;    
}

预期输出为ece 1 is of 33 students.,为什么输出屏幕为空白?

1 个答案:

答案 0 :(得分:1)

您只能打印到buffer中,但不在屏幕上打印任何内容。

这就是您需要的:

void TraceDebug ( const char * format, ... )
{
  static char buffer[256];
  va_list args;
  va_start (args, format);
  vsprintf (buffer,format, args);
  va_end (args);
  printf("%s", buffer);  // <<< add this
}

或者,如果只想在屏幕上输出,则只需使用vprintf

void TraceDebug(const char * format, ...)
{
  va_list args;
  va_start(args, format);
  vprintf(format, args);  // <<<<<<<<<<<
  va_end(args);
}