我正在编写一个工具,它使用各种void函数来分析程序在输入中接收的一些元素,并在stdout中打印(使用printf())分析结果。显然这意味着我非常使用printf(),因为有很多东西需要打印。我希望所有内容都打印在标准输出上,也打印在日志文件中。但是对每个printf()函数使用fprintf()会使程序变得更长,更混乱并且没有良好的排序。有没有办法直接保存函数的输出文件?因此,如果我有一个void函数,例如analyze()包含许多printf()函数,那么analyze()的输出将打印在stdout(到shell)和文件中。我试图寻找它,但没有任何结果。 谢谢你的帮助!
答案 0 :(得分:1)
通常更好的方法是使用专门的日志记录功能,而不是使用直接的printf / fprintf调用来编写代码。该日志记录功能可以写入stdout,一个日志文件,无论你想要什么,并且可以在调试/发布等方面有所不同。
答案 1 :(得分:1)
您可以编写一个函数来发出printf和fprintf并调用该函数。
例如,这是一个骨架,显然你必须填写......:
void myPrintf(...)
{
printf(...);
fprintf(...);
}
然后在您的代码中,您可以调用:
而不是printfmyPrintf(...);
您也可以使用宏来执行此操作。
如果你需要关闭日志记录,你可以通过简单地拉出该函数中的fprintf并保持其余代码不变来实现。