C语言如何在可变参数函数中使用printf?

2025-03-11 08:07:49
推荐回答(4个)
回答1:

如@psxf91所答,应使用v*系列的函数来实现。对比下printf与vprintf函数原型:

void printf(const char *format, ...);
void vprintf(const char *format, va_list ap);

可以看出二者的差别。vprintf才接收va_list类型,printf接收的是不定参数。

因此,要实现你的要求代码如下:

#include "stdarg.h"

void fun(const char *fmt, ...){
    va_list ap;
    va_start(ap, fmt);
    // ...
    vprintf(fmt, ap);
    // ...
    va_end(ap);
}

回答2:

我记得有个函数叫vprintf,
用stdarg.h的宏把va_list拿到
然后传进去,即可。

回答3:

找到printf的原型,根据这个实现,一般可变参数用的比较少,能不实现就不要实现,以防以后遇到问题.解决起来麻烦!

回答4:

你可以用字符指针作为函数的参数,自己在函数里面设计一个格式去读这个指针指向的一串字符。
比如printf
,scanf
函数就是这样的。函数参数就有字符指针。
例如printf("the
data
is
%d",x);
字符串"the
data
is
%d"的首地址给了字符指针。