C言語はまぁできるつもりな者です。お世話になります。
C言の宿題で、行列の諸計算を行うプログラムを書け、というのがあって、
計算自体はできたんですがよくよく課題を見てみると
「・・・を表示し、また同時にファイルに出力する。」
みたいな事が書いてありまして。

さすがにそこら中のprintfを同じ内容の
printfとfprintf2行に書くのはどうかと思い
define使って1行にしようと思ったのですが、
引数がいくつでもいいprintfをdefineに組み込むのが
どうしてもうまくできません。とりあえず今はしょうがなく

#define printf1(a)   printf(a),   fprintf(fp,a)
#define printf2(a,b)  printf(a,b),  fprintf(fp,a,b)
#define printf3(a,b,c) printf(a,b,c), fprintf(fp,a,b,c)
・・・(以下略)

としてますが、もっとうまくやる方法を探しています。
だいいち、マクロ名を何個も用意するのは気が進みません
(マクロ内に変数(ファイルポインタ)を直接書くのもどうかと思いますが)。

前にどこかで見かけたモノで、myprintf((式))のように
括弧を2重にするような記述方法があったような気がするんですが
探しても見つかりません。どなたかぐっとくるような回答をお願いします。