other versions
STRFMON(3) | Linux Programmer's Manual | STRFMON(3) |
名前¶
strfmon - 金額の値を文字列に変換する書式¶
#include <monetary.h>説明¶
strfmon() 関数は、指定された数量を format で指定されたフォーマットにしたがって整形し、 結果をサイズ max の文字配列 s に書きこむ。 format 中の通常の文字は、変換されずにそのまま s にコピーされる。変換指定は '%' 文字で始まる。 この直後には、以下のフラグを 0 個以上続けることができる。- =f
- 1 バイト文字 f を数値埋め文字 (numeric fill character) にする (左精度と共に用いる。以下を参照)。 指定されないと、スペース文字が用いられる。
- ^
- 現在のロケールで定義されているであろうグループ化文字 (grouping character) を一切使わない。デフォルトではグループ化は有効になっている。
- ( または +
- ( フラグは、負の数値を括弧で括ることを意味する。 + フラグは符号をデフォルトのように取り扱うことを意味する (すなわち数値の前にロケールの符号マークが置かれる。 例えば正ならなにもなく、負なら '-' を置く、など)。
- !
- 通貨シンボルを省略する。
- -
- すべてのフィールドを左詰めにする。デフォルトは右詰め。
- %
- (この場合は指定全体が "%%" でなければならない。) 結果の文字列に '%' 文字を書きこむ。
- i
- double 型の引き数ひとつが、 ロケールの国際通貨フォーマット (international currency format) を用いて変換される。
- n
- double 型の引き数ひとつが、 ロケールの国内通貨フォーマット (national currency format) を用いて変換される。
返り値¶
strfmon() 関数は、結果の文字列が終端の NULL バイトを含めて配列 s に収まった場合には、 s に書きこまれた文字数を返す。NULL バイトは文字数に入らない。 それ以外の場合には、 errno に E2BIG を設定して -1 を返す。 この場合の配列の内容は未定義である。準拠¶
POSIX.1-2001 にはない。 他のいくつかのシステムに存在する。例¶
次のような関数コールstrfmon(buf, sizeof(buf), "[%^=*#6n] [%=*#6i]", 1234.567, 1234.567);
は、オランダのロケールでは以下のような出力になる。
(fl は "florijnen" の意。NLG は Netherlands Guilder。) グループ化文字を用いると非常に醜くなる。 同時に間違いなく混乱の原因にもなってしまうだろう。 これは数値の半分以下の幅であるべきだが、 数値と同じだけの幅を取ってしまうからである。 ひどいことに、 "fl" の前後にはスペースが入ってしまい、 また "NLG" の前には 1 つ、後には 2 つのスペースが置かれている。 これはロケールファイルのバグであろう。 イタリア・オーストラリア・スイス・ポルトガルの 各ロケールでの結果は以下のようになる。
関連項目¶
setlocale(3), sprintf(3), locale(7)この文書について¶
この man ページは Linux man-pages プロジェクトのリリース 3.41 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。2000-12-05 | Linux |