EN JA
STRFMON(3)
STRFMON(3) FreeBSD Library Functions Manual STRFMON(3)

名称

strfmon貨幣値を文字列に変換する

ライブラリ

Standard C Library (libc, -lc)

書式

#include < monetary.h>

ssize_t
strfmon( char * restrict s, size_t maxsize, const char * restrict format, ...);

ssize_t
strfmon_l( char * restrict s, size_t maxsize, locale_t loc, const char * restrict format, ...);

解説

strfmon() 関数は、 format によって指される文字列によって制御されるように s によって指された配列に文字を置きます。 maxsize 以上のバイトは、配列に置かれません。

strfmon_l() 関数は、 strfmon() と同じこと行いますが、現在のロケールを使用するのではなく明示的なロケールを試みます。

書式 (フォーマット) 文字列は、0 以上の指示で構成されます: 普通の文字 ( % でない) は、出力ストリームに変更せずにコピーされます。そして、変換指定子は、それぞれ 0 以上のその後の引数を取って来ます。それぞれの変換指定子は、 % 文字によって導入されます。 % の後に、次の順序で現れます:

  • 次の 0 以上のフラグ:
    = f
    =’文字は、数値を満たす文字として使用される別の文字 f が続きます。
    ^
    現在のロケールのデフォルトにかかわらずグループ分け文字を使用しません。
    +
    正の符号をそれらの前に置くことによって正の値を表して、負の符号をそれらの前に置くことによって負の値を表します。これは、デフォルトです。
    (
    括弧中の負の値を囲みます。
    !
    出力で通貨記号を含めません。
    -
    結果を左詰めにします。フィールドの幅が指定されるときのみ有効です。
  • 10 進数で指定するオプションの最小フィールドの幅。デフォルトでは、最小の幅は、ありません。
  • #’符号は、基数文字の後に予想される最大の桁数を指定する 10 進数が続きます。
  • .’文字は、基数文字の後の桁数を指定する 10 進数が続きます。
  • 次は、変換指定子のひとつです:
    i
    double 引数は、国際的な金額 (通貨の量) としてフォーマットされます。
    n
    double 引数は、国の金額 (通貨の量) としてフォーマットされます。
    %
    %’文字が書き込まれます。

戻り値

終端の ヌル バイトも含めて結果のバイトの総数が maxsize より大きくなければ、 strfmon() は、終端の ヌル バイトを含ますに、 s によって指される配列に置かれたバイト数を返します。そうでなければ、-1 が返され、配列の内容が不定となり、 errno は、エラーを示す値に設定されます。

strfmon_l() 関数は、 strfmon() と同じ値を返します。

エラー

strfmon() 関数は、次の場合に失敗します:
[ E2BIG]
バッファ中の空間の不足のために変換は、止まりました。
[ EINVAL]
書式 (フォーマット) の文字列は、無効です。
[ ENOMEM]
一時的なバッファのために十分なメモリがありません。

関連項目

localeconv(3)

規格

strfmon() 関数は、 IEEE Std 1003.1-2001 (“POSIX.1”) に適合しています。 strfmon_l() 関数は、 IEEE Std 1003.1-2008 (“POSIX.1”) に適合しています。

作者

strfmon() 関数は、 Alexey Zelkin <phantom@FreeBSD.org>によって実装されました。

このマニュアルページは、規格のテキストに基づいて Jeroen Ruigrok van der Werven <asmodai@FreeBSD.org>によって書かれました。

バグ

strfmon() 関数は、 format 引数でマルチバイト文字を正しく扱いません。
June 25, 2012 FreeBSD