File 是否可以在文件上打印函数的输出?

File 是否可以在文件上打印函数的输出?,file,stdout,output,printf,File,Stdout,Output,Printf,我正在编写一个工具,它使用各种void函数来分析程序在输入中接收到的一些元素,并在stdout(使用printf())中打印分析结果。显然,这意味着我经常使用printf(),因为有很多东西需要打印。我希望一切都打印在标准输出上,也打印在日志文件上。但是,对每个printf()函数使用fprintf()会使程序变得更长、混乱,并且没有很好的顺序。有没有办法将函数的输出直接保存到文件中?因此,如果我有一个void函数,例如analyze(),它包含许多printf()函数,那么analyze()的

我正在编写一个工具,它使用各种void函数来分析程序在输入中接收到的一些元素,并在stdout(使用printf())中打印分析结果。显然,这意味着我经常使用printf(),因为有很多东西需要打印。我希望一切都打印在标准输出上,也打印在日志文件上。但是,对每个printf()函数使用fprintf()会使程序变得更长、混乱,并且没有很好的顺序。有没有办法将函数的输出直接保存到文件中?因此,如果我有一个void函数,例如analyze(),它包含许多printf()函数,那么analyze()的输出将打印在stdout(到shell)中,也打印在一个文件中。我试着去寻找,但没有结果。
谢谢你们的帮助

通常最好有一个专门的日志功能,而不是直接调用printf/fprintf来填充代码。该日志函数可以写入stdout,一个日志文件,任何您想要的,并且在调试/发布等方面可以不同。

您可以编写一个函数,该函数将发出printf和fprintf,并调用该函数

例如,这里有一个骨架,显然您必须填写…:

void myPrintf(...) 
{
     printf(...);
     fprintf(...);
}
然后,在代码中,您可以调用以下函数,而不是printf:

myPrintf(...);
您也可以使用宏来执行此操作


如果您需要关闭日志记录,只需拉出该函数中的fprintf并保持其余代码不变即可。谢谢您的回答。如何设计日志记录功能?我的意思是,是否可以创建一个专门的日志功能,直接在文件上打印其他功能的全部输出?如果没有,我必须为每个printf调用它!事实上,这是一个好主意!如果没有其他解决方案,比如直接在文件上打印其他函数的输出的函数,这是我可以使用的最好方法!谢谢我从来没有想过。但是我遇到了一个问题。如果printf()函数还用于打印来自各种变量和结构的值……如何在myPrintf函数中传递它们?我的意思是,如果我有这样一个printf:
printf(“x的值是:%d”,x)你的意思是如何处理数量可变的参数吗?我的意思是,例如,如果我有这样一个printf:
printf(“x的值是:%d”,x)如何将其传递给myPrintf?好的,为此您需要使用varargs。查看此显示示例的链接,看看是否有帮助: