传递参数列表

时间:2011-09-28 10:37:54

标签: c

我正在尝试将一个参数列表传递给sprintf,这显然并没有把它们拿起来。我错过了什么?

void respond( const char *format, ...) {
  char buffer[256];
  va_list args;
  int len, retCode;

  va_start( args, format);
  len = sprintf( buffer, format, args);
  va_end( args);

  retCode = send( newSockFD, buffer, len, 0);
  if( retCode == -1) error( "Could not write to socket");
}

2 个答案:

答案 0 :(得分:6)

使用 vsnprintf()代替sprintf()。

http://pubs.opengroup.org/onlinepubs/009695399/functions/vprintf.html

答案 1 :(得分:1)

printf无法使用变量参数,因此请使用

<强> vsnprintf()

 len = vsnprintf( buffer, sizeof(buffer),format, args);