2011-09-28 79 views
0

我试图传递一个参数列表给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"); 
} 

回答

1

的sprintf不能与varable参数工作,所以使用

vsnprintf()

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

工程奇迹!谢谢。 – MonoThreaded

+0

高兴通过帮助... :) –

+2

在看到这些我知道它没有多快,你告诉他的道路,你如何让他明白:) – niko

6

使用vsnprintf()代替的sprintf()。

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

+0

感谢您的提示的响应。我接受了下一个,因为我可以粘贴代码而不是点击链接。 – MonoThreaded

+0

@ user294702也许点击链接更麻烦,但你不会通过复制/粘贴代码来学习任何东西。只是我2美分。 +1 smbear –

+0

@smbear我没有阅读你的答案,并给我的答案.. othervise我真的+1你的答案,不要给我的答案.. !!! –