ユーザーが何を望んでいるかに応じて、stdoutまたはファイルのいずれかに書き込むことができる必要がある関数があります。ただし、デフォルトでは標準出力になっています。これを達成するために、私は次のことを行っています(マイナスエラーチェックなど):
FILE* out;
if (writeToFile) { /*Code to open file*/; }
else
out = stdout;
// ...rest of the function goes here
if (out != stdout)
fclose(out);
これは確かにうまくいきますが、それがどれほどポータブルかはわかりません。そうでない場合、および/またはそれに別の問題がある場合、これについてどのように対処する必要がありますか?