【问题标题】:Passing ... parameters in C [duplicate]在C中传递...参数[重复]
【发布时间】:2014-11-07 21:26:22
【问题描述】:

我想创建这个函数,但是……参数列表不能这样传递。解决这个问题的正确方法是什么?

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

【问题讨论】:

标签: c


【解决方案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;
}

【讨论】:

    猜你喜欢
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    • 2015-03-21
    • 1970-01-01
    • 2017-02-12
    • 2023-03-03
    相关资源
    最近更新 更多