我正在尝试将一个参数列表传递给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");
}
答案 0 :(得分:6)
使用 vsnprintf()代替sprintf()。
http://pubs.opengroup.org/onlinepubs/009695399/functions/vprintf.html
答案 1 :(得分:1)
printf无法使用变量参数,因此请使用
<强> vsnprintf()强>
len = vsnprintf( buffer, sizeof(buffer),format, args);