我想创建这个函数,但是......参数列表不能以这种方式传递。什么是正确的方法?
是的,我知道有些编译器会提供“asprintf'”。我的问题不是我应该使用什么功能,而是如何让这样的参数传递起作用。
// Allocates a formmated string
char *msprintf(const char *format, ...)
{
int size = snprintf(NULL, 0, format, ...);
char *buf = (char*)malloc(size);
snprintf(buf, size, format, ...);
return buf;
}
答案 0 :(得分:1)
您可以在通话中使用vsnprintf()
。
char *msprintf(const char *format, ...) {
va_list args;
va_start(args, format);
int size = vsnprintf(NULL, 0, format, args);
char *buf = malloc(size);
vsnprintf(buf, size, format, args);
va_end(args);
return buf;
}