0

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

4

2 回答 2

1

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

例如,这是一个骨架,显然你必须填写...:

void myPrintf(...) 
{
     printf(...);
     fprintf(...);
}

然后在您的代码中,而不是 printf,您可以调用:

myPrintf(...);

您也可以使用宏来执行此操作。

如果您需要关闭日志记录,您只需在该函数中拉出 fprintf 并保持其余代码不变即可。

于 2012-12-11T23:41:38.247 回答
1

通常最好有一个专门的日志功能,而不是用直接的 printf/fprintf 调用来填充你的代码。该日志记录功能可以写入标准输出、日志文件,无论您想要什么,并且可以在调试/发布等方面有所不同。

于 2012-12-11T23:39:52.037 回答