Manpages

名 前

strfmon − 金 額 の 値 を 文 字 列 に 変 換 す る

書 式

#include <monetary.h>

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

説 明

strfmon() 関 数 は 、 指 定 さ れ た 数 量 を format で 指 定 さ れ た フ ォ ー マ ッ ト に し た が っ て 整 形 し 、 結 果 を サ イ ズ max の 文 字 配 列 s に 書 き こ む 。

format 中 の 通 常 の 文 字 は 、 変 換 さ れ ず に そ の ま ま s に コ ピ ー さ れ る 。 変 換 指 定 は '%' 文 字 で 始 ま る 。 こ の 直 後 に は 、 以 下 の フ ラ グ を 0 個 以 上 続 け る こ と が で き る 。

=f

1 バ イ ト 文 字 f を 数 値 埋 め 文 字 (numeric fill character) に す る (左 精 度 と 共 に 用 い る 。 以 下 を 参 照 )。 指 定 さ れ な い と 、 ス ペ ー ス 文 字 が 用 い ら れ る 。

^

現 在 の ロ ケ ー ル で 定 義 さ れ て い る で あ ろ う グ ル ー プ 化 文 字 (grouping character) を 一 切 使 わ な い 。 デ フ ォ ル ト で は グ ル ー プ 化 は 有 効 に な っ て い る 。

( ま た は +

( フ ラ グ は 、 負 の 数 値 を 括 弧 で 括 る こ と を 意 味 す る 。 + フ ラ グ は 符 号 を デ フ ォ ル ト の よ う に 取 り 扱 う こ と を 意 味 す る (す な わ ち 数 値 の 前 に ロ ケ ー ル の 符 号 マ ー ク が 置 か れ る 。 例 え ば 正 な ら な に も な く 、 負 な ら '−' を 置 く 、 な ど )。

! 通 貨 シ ン ボ ル を 省 略 す る 。

す べ て の フ ィ ー ル ド を 左 詰 め に す る 。 デ フ ォ ル ト は 右 詰 め 。 次 の 位 置 に は 、 フ ィ ー ル ド の 幅 を 指 定 で き る 。

10 進 の 数 値 文 字 列 で 、 フ ィ ー ル ド の 最 小 幅 を バ イ ト 単 位 で 指 定 す る 。 デ フ ォ ル ト は 0。 結 果 が こ の 幅 よ り も 狭 く な っ た 場 合 に は 、 不 足 分 が ス ペ ー ス で 埋 め ら れ る (左 詰 め フ ラ グ が 指 定 さ れ て い な け れ ば 左 側 が 埋 め ら れ る )。 次 の 位 置 に は 、 "#" に 10 進 数 値 文 字 列 を 続 け た 形 式 で 、 左 精 度 (left precision) を 指 定 で き る 。 通 貨 の 基 数 点 (radix) よ り 左 側 の 数 値 の 桁 数 が こ の 指 定 よ り 小 さ い 場 合 は 、 数 値 埋 め 文 字 で 左 側 が 埋 め ら れ る 。 こ の フ ィ ー ル ド 幅 の 指 定 で は 、 グ ル ー プ 化 文 字 は カ ウ ン ト さ れ な い 。 次 の 位 置 に は 、 "." に 10 進 数 値 文 字 列 を 続 け た 形 式 で 、 右 精 度 (right precision) を 指 定 で き る 。 整 形 さ れ る 数 値 は 、 整 形 前 に こ の 桁 数 に 丸 め ら れ る 。 デ フ ォ ル ト で は カ レ ン ト ロ ケ ー ル の frac_digitsint_frac_digits の 指 定 を 用 い る 。 右 精 度 が 0 の 場 合 は 、 基 数 点 文 字 (radix character) は 印 字 さ れ な い (こ こ で の 基 数 点 文 字 は LC_MONETARY で 定 義 さ れ て お り 、 LC_NUMERIC の 指 定 と は 異 な っ て い て も よ い )。 最 後 に 、 変 換 指 定 は 変 換 文 字 (conversion character) で 終 了 し な け れ ば な ら な い 。 変 換 文 字 に は 以 下 の 3 つ が あ る 。

%

(こ の 場 合 は 指 定 全 体 が "%%" で な け れ ば な ら な い 。 ) 結 果 の 文 字 列 に '%' 文 字 を 書 き こ む 。

i

double 型 の 引 き 数 ひ と つ が 、 ロ ケ ー ル の 国 際 通 貨 フ ォ ー マ ッ ト (international currency format) を 用 い て 変 換 さ れ る 。

n

double 型 の 引 き 数 ひ と つ が 、 ロ ケ ー ル の 国 内 通 貨 フ ォ ー マ ッ ト (national currency format) を 用 い て 変 換 さ れ る 。

返 り 値

strfmon() 関 数 は 、 結 果 の 文 字 列 が 終 端 の ヌ ル バ イ ト を 含 め て 配 列 s に 収 ま っ た 場 合 に は 、 s に 書 き こ ま れ た 文 字 数 を 返 す 。 ヌ ル バ イ ト は 文 字 数 に 入 ら な い 。 そ れ 以 外 の 場 合 に は 、 errnoE2BIG を 設 定 し て −1 を 返 す 。 こ の 場 合 の 配 列 の 内 容 は 未 定 義 で あ る 。

準 拠

POSIX.1−2001 に は な い 。 他 の い く つ か の シ ス テ ム に 存 在 す る 。

次 の よ う な 関 数 コ ー ル

strfmon(buf, sizeof(buf), "[%^=*#6n] [%=*#6i]",
1234.567, 1234.567); は 、 オ ラ ン ダ の ロ ケ ー ル で は 以 下 の よ う な 出 力 に な る 。

[ fl **1234,57] [ NLG **1 234,57]

(fl は "florijnen" の 意 。 NLG は Netherlands Guilder。 ) グ ル ー プ 化 文 字 を 用 い る と 非 常 に 醜 く な る 。 同 時 に 間 違 い な く 混 乱 の 原 因 に も な っ て し ま う だ ろ う 。 こ れ は 数 値 の 半 分 以 下 の 幅 で あ る べ き だ が 、 数 値 と 同 じ だ け の 幅 を 取 っ て し ま う か ら で あ る 。 ひ ど い こ と に 、 "fl" の 前 後 に は ス ペ ー ス が 入 っ て し ま い 、 ま た "NLG" の 前 に は 1 つ 、 後 に は 2 つ の ス ペ ー ス が 置 か れ て い る 。 こ れ は ロ ケ ー ル フ ァ イ ル の バ グ で あ ろ う 。 イ タ リ ア 、 オ ー ス ト ラ リ ア 、 ス イ ス 、 ポ ル ト ガ ル の 各 ロ ケ ー ル で の 結 果 は 以 下 の よ う に な る 。

[ L. **1235] [ ITL **1.235]
[ $**1234.57] [ AUD **1,234.57]
[Fr. **1234,57] [CHF **1.234,57]
[ **1234$57Esc] [ **1.234$57PTE ]

関 連 項 目

setlocale(3), sprintf(3), locale(7)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。