我正在为不同类型的用户开发一个 C 项目。对于日志记录和调试,我真的很感激一个定制的printf函数,它只是在消息的开头添加了一个表明用户类型的标签。是否可以不printf从头开始重写函数?
这是一个粗略的例子。my_print()以与 相同的方式调用printf(),但它在处理参数之前产生一些输出。当然,额外的输出是什么以及它来自哪里是需要在特定应用程序中确定的。
重要的事实是,我们可以提供类似 printf 的函数而无需重新实现printf().
#include <stdarg.h>
#include <stdio.h>
void my_printf (const char *fmt,...)
{
va_list ap;
va_start (ap, fmt);
printf ("MY INFO... ");
vprintf (fmt, ap);
va_end (ap);
}
int main (int argc, char **argv)
{
my_printf ("The answer is %d\n", 42);
return 0;
}
Run Code Online (Sandbox Code Playgroud)