在C中传递...参数

时间:2014-09-14 02:51:45

标签: c

我想创建这个函数,但是......参数列表不能以这种方式传递。什么是正确的方法?

是的,我知道有些编译器会提供“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;
}

1 个答案:

答案 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;
}