Next: C++ Formatted Output, Previous: Formatted Output Strings, Up: Formatted Output [Index]
以下で示す関数はそれぞれ対応するCライブラリの関数とほぼ同じ機能を持ちます。printf
では変数の可変リストを,vprintf
は変数へのポインタをそれぞれ使用します。詳細は Variadic Functions in The GNU C Library Reference Manualか,‘man 3 va_start’を参照して下さい。
書式指定が間違っていたり,型指定が食い違っていたりした時の出力は予測不能です。GCCの書式指定チェック機構は,GMPの拡張指定に対応していないので,役に立ちません。
ファイルに対する出力関数であるgmp_printf
やgmp_fprintf
関数は,書き込みエラー時には-1を返します。出力は"atomic"ではありませんので,書き込みエラー時には一部だけが書きこまれる可能性があります。Cライブラリのprintf
関数やその派生関数が-1
を返すようになっていれば,GMPの出力関数もそれにならってエラー時には-1を返します。
標準出力stdout
に表示を行います。通常は出力文字数を返し,エラー時には-1を返します。
ファイルストリームfpに出力します。通常は出力文字数を返し,エラー時には-1を返します。
bufにNULL終端子付きの文字列を形成します。返り値は,NULL終端子を除いた出力文字数になります。
bufスペースと,fmt文字列がメモリ空間を共有してはいけません。
bufスペース以上の出力を防止する機能はありませんので,これらの関数の使用はお勧めしません。
bufにNULL終端子付きの文字列を形成します。sizeバイト以上の書き込みはできません。従って,出力結果を全て補損しておきたい時には,sizeは文字列長+NULL終端子以上のスペースが必要になります。
返り値は,NULL終端子文を除いた生成すべき文字全体の長さとなります。retval >= sizeであれば,出力結果は最初のsize-1文字分に,NULL終端子を足した長さになります。
{buf,size}とfmt文字列とのメモリ空間共有は行わないで下さい。
返り値はISO C99 snprintf
関数と同じです。Cライブラリのvsnprintf
関数が古いGLIBC 2.0.xの形式であっても同様です。
実行時におけるメモリ割り当て関数(see Custom Allocation)を使って確保されたメモリブロックに,NULL終端子付きの文字列を形成します。メモリブロックはNULL終端子を含む文字列分確保され,このブロックへのポインタは*ppに保存されます。返り値は,NULL終端子を除く生成文字列長となります。
Cのasprintf
関数とは異なり,gmp_asprintfはメモリ不足の時にも-1を返さず,必要なだけメモリを確保しようとします。
既存オブジェクトopに追記します。返り値は書きこまれた文字数です。NULL終端子は付きません。
fmtは,更に増える可能性のあるopとは別に確保しなくてはなりません。
これらの関数はCライブラリがobstackを利用できる場合のみ使用できます。つまりGNUのシステム限定となります。詳細はObstacks in The GNU C Library Reference Manualをご覧下さい。