You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写可直接透传可变参数给printf的自定义函数,无需手动处理参数

实现方法

C 语言不支持你示例中直接写 printf(question, ...) 的透传语法,但可以通过 <stdarg.h> 提供的工具配合 vprintf 实现需求,全程不需要手动解析可变参数,仅需要增加几行固定模板代码即可:

#include <stdio.h>
#include <stdarg.h>

void lee(char* question, ...) {
    /* 你的前置自定义代码 */
    va_list args;
    va_start(args, question);
    vprintf(question, args);
    va_end(args);
    /* 你的后置自定义代码 */
}

说明

  • 上述代码中可变参数相关的4行代码是固定模板,不需要理解底层实现直接套用即可,所有传入 lee 函数的参数会原样传递给 vprintf,输出效果和直接调用 printf 完全一致
  • 如果后续需要封装输出到文件、输出到字符串的逻辑,只需要把 vprintf 替换为对应的 vfprintf、vsprintf、vsnprintf 即可,参数处理的逻辑不用做任何修改
  • 调用示例:
    // 调用lee函数,效果和直接执行printf完全相同
    lee("菜单选项%d:%s\n", 1, "用户登录");
    

内容的提问来源于stack exchange,提问作者Ica Polinesio GarLop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 09:15:00