tmpfile + fprintf + ftell でいいんじゃね。
これで必要なバッファサイズがわかる。