我要将printf外面再包上一层:
void fun(const char* fmt,...)
{
........
printf(fmt,...);
........
}
这种函数怎么写?
C语言如何在可变参数函数中使用printf?
答案:3 悬赏:10
解决时间 2021-03-05 21:08
- 提问者网友:一人心
- 2021-03-04 20:25
最佳答案
- 二级知识专家网友:夢想黑洞
- 2021-03-04 21:10
如@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);
}
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);
}
全部回答
- 1楼网友:怪咖小青年
- 2021-03-05 00:06
我记得有个函数叫vprintf,
用stdarg.h的宏把va_list拿到
然后传进去,即可。
- 2楼网友:duile
- 2021-03-04 22:32
你可以用字符指针作为函数的参数,自己在函数里面设计一个格式去读这个指针指向的一串字符。
比如printf ,scanf 函数就是这样的。函数参数就有字符指针。
例如printf("the data is %d",x);
字符串"the data is %d"的首地址给了字符指针。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯