【问题标题】:Immitating printf模仿 printf
【发布时间】:2012-05-21 15:55:19
【问题描述】:

以下代码有什么问题?我们怎样才能让函数 print() 像 printf 一样工作?

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

void print(char *format,...)
{
    va_list args;
    va_start(args,format);
    printf(format,args);
}

int main() {
   print("%d %s",5,"le");
}

【问题讨论】:

标签: c printf


【解决方案1】:

如果您需要传递可变参数,请改用vprintf

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      您可能需要查看vprintf。该函数(以及相关函数)允许您传递变量参数列表,它们会处理格式。

      【讨论】:

        【解决方案4】:

        首先,缺少va_end() 调用,如果使用va_start(),则这是必需的。

        如果你想使用va_list 作为参数,你不能使用printf()。看一眼 vprintf().

        示例:

        void print(char *format,...)
        {
            va_list args;
            va_start(args,format);
            vprintf(format,args);
            va_end(args);
        }
        

        【讨论】:

          猜你喜欢
          • 2014-02-09
          • 1970-01-01
          • 2018-07-30
          • 2011-03-21
          • 2017-09-19
          • 2010-09-30
          • 2014-04-25
          • 2011-01-10
          • 2017-08-09
          相关资源
          最近更新 更多