#include <stdio.h>
#include <stdarg.h> // 可变参数头文件
/*
【C语言如何在可变参数函数中使用printf?】
应使用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);
}
*/
#if 1
void my_print(char *fmt, ...)
{
va_list args;
va_start(args, fmt);
char logBuff[1024] = {0};
vsprintf(logBuff, fmt, args);
printf("%s", logBuff);
va_end(args);
fflush(stdout);
}
int main(int argc, char *argv[])
{
int ret = 0;
char addr[] = "192.168.1.1";
my_print("IP addr:%s; 123%d\n", addr, ret); // 1:1234
return 0;
}
// [zll@zll 6_weiXin_Exp]$ ./printf_test
// addr:192.168.1.1; 1230
#endif
// 日志打印到文件中:https://blog.youkuaiyun.com/liangyuannao/article/details/7858785?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control
// https://blog.youkuaiyun.com/petersmart123/article/details/75783235?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-3.control
// https://blog.youkuaiyun.com/zjutchenjm/article/details/17007015