Previous: , Up: Rational Number Functions   [Index]


6.6 入出力関数

ここに述べる関数は,標準入出力ストリームとの入出力行うものです。NULLポインタがstream引数に渡されると,stdinstdoutとの入出力を行います。

この関数群を使う際には, gmp.hより前にstdio.hをインクルードしておき,必要となるプロトタイプ宣言が利用できるようにしておきます。

Formatted OutputFormatted Inputも参照して下さい。

Function: size_t mpq_out_str (FILE *stream, int base, const mpq_t op)

opをstdioストリームstreamに,基数baseの文字列として出力します。基数は2以上36以下に設定できます。出力形式は‘num/den’となりますが,分母が1の時は ‘num’だけになります。

返り値は書きこんだバイト数です。エラーが起こった時にはゼロが返されます。

Function: size_t mpq_inp_str (mpq_t rop, FILE *stream, int base)

streamから文字列を読み込んで有理数に変換し,ropに格納します。先頭のホワイトスペースは読み込みますが影響はしません。返り値は読み込んだ文字数(ホワイトスペースも含む)で,有理数として読み取れない場合はゼロが返されます。

入力できるのは‘17/63’という有理数の形式か,‘123’という整数の形式です。この形式に当て嵌まらない文字があると読み込みを停止します。ホワイトスペースが文字列中に入ることは認められていません。入力が標準形でない場合は, mpq_canonicalize関数を呼び出す必要があります(see Rational Number Functions)。

baseは2以上36以下に設定できます。0の場合は,先頭の文字で基数を判断します。 ‘0x’ や ‘0X’は16進,‘0’は8進,何もなければ10進と解釈します。この先頭文字による基数の解釈は分子と分母で別々に行いますので,例えば ‘0x10/11’ は 16/11,‘0x10/0x11’ は 16/17となります。