0

プログラムが入力で受け取るいくつかの要素を分析し、分析結果を(printf()を使用して)stdoutに出力するために、さまざまなvoid関数を使用するツールを作成しています。印刷する必要のあるものがたくさんあるので、明らかにそれは私がprintf()を非常に使用することを意味します。すべてがstdoutに印刷され、ログファイルにも印刷されるようにしたいと思います。ただし、各printf()関数にfprintf()を使用すると、プログラムが非常に長くなり、混乱し、順序が正しくなくなります。関数の出力をファイルに直接保存する方法はありますか?したがって、たとえば、多くのprintf()関数を含むanalyze()のvoid関数がある場合、analyze()の出力はstdout(シェル)とファイルに出力されます。私はそれを探しようとしましたが、結果はありませんでした。助けてくれてありがとう!

4

2 に答える 2

1

一般に、直接printf / fprintf呼び出しでコードをペッパーするよりも、特殊なロギング関数を使用する方が適切です。そのロギング関数は、stdout、ログファイルなど、必要なものに書き込むことができ、デバッグ/リリースなどで異なる場合があります。

于 2012-12-11T23:39:52.037 に答える
1

printfとfprintfを発行する関数を作成し、代わりにその関数を呼び出すことができます。

たとえば、ここにスケルトンがあります。明らかに、次のように入力する必要があります...:

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

次に、コードでprintfの代わりに、次のように呼び出すことができます。

myPrintf(...);

マクロを使用してこれを行うこともできます。

ロギングをオフにする必要がある場合は、その関数のfprintfを引き出して、残りのコードを変更しないでください。

于 2012-12-11T23:41:38.247 に答える