sprintf¶
Category: 変換
書式¶
(sprintf、書式、値1、値2、…)
引数¶
| 引数 | 説明 |
|---|---|
| 書式 | %d などの変換指定を含む文字列 |
| 値 | 変換指定に順に埋め込む値 |
戻り値¶
書式に値を埋め込んだ文字列。引数がないときは 引数が足りません。(エラー)。
解説¶
C 言語の sprintf に近い書式で文字列を作ります。書式の % から始まる変換指定に、値を先頭から順に 1 つずつ埋め込みます。値が足りない変換指定や、%z のように変換文字が正しくない指定は、そのまま文字として残ります(このとき値は消費しません。Mc201-7以降。それ以前は、正しくない指定の % が消え、値も 1 つ使われていました)。余った値は無視されます。
幅は 4096、精度は 512 が上限です。それを超える数を書いても、上限として扱います(Mc201-7以降)。
変換指定¶
%[フラグ][幅][.精度]変換文字 の形です。
| フラグ | 意味 |
|---|---|
- |
左寄せ |
+ |
正の数にも + を付ける |
0 |
0 で埋める |
| 空白 | 空白で埋める |
# |
x o に 0x 0 を付ける。f e に小数点を必ず付ける |
| 変換文字 | 意味 |
|---|---|
d |
10 進整数 |
i |
10 進整数(d と同じ。Mc201-1 では 8 進になる不具合があり、Mc201-2 で修正) |
o |
8 進整数(符号なし) |
u |
10 進整数(符号なし) |
x X |
16 進整数(小文字・大文字) |
f |
小数(固定小数点) |
e E |
小数(指数表記)。Windows では指数部が 3 桁になる(1.234500e+003) |
g G |
小数(f と同じ固定小数点表記になる) |
s S |
文字列。幅は半角換算(全角文字を 2 として)数える。精度を指定すると、その文字数までに切り詰める(%.3s。Mc201-2以降) |
c C |
数値を文字コード(Unicode のコードポイント)として 1 文字にする |
値は全角の数字も使えます。整数の変換は、数値として読めない値を 0 として扱います。
SAORI 引数の計算に注意
数字で始まる値は、里々が先に式として計算してから渡します。(sprintf、%s、1+2) は 3 に、(sprintf、%s、1-2) は -1 になります。式のまま出力したいときは $SAORI引数の計算=無効 にしてください。007 のように演算子を含まない数字はそのままです。詳しくはssu の引数の計算を参照してください。
使用例¶
(sprintf、%d個、5) → 5個
(sprintf、%05d、42) → 00042
(sprintf、%x、255) → ff
(sprintf、%X、255) → FF
(sprintf、%s-%s、a、b) → a-b
(sprintf、[%5s]、あ) → [ あ] (あ は幅 2 として数える)
(sprintf、[%-5s]、あ) → [あ ]
(sprintf、%.2f、3.14159) → 3.14
(sprintf、%c、65) → A
(sprintf、[%.3s]、あいうえお) → [あいう]
(sprintf、%+d、5) → +5