OpenVMS
HP C ランタイム・ライブラリ・
リファレンス・マニュアル (上巻)


前へ 次へ 目次 索引


注意事項

2.4.2 出力情報の変換

情報を出力する場合の書式指定文字列には,次の文字を指定できます。

変換指定は次の文字で構成され,順序はここに示したとおりになります。

変換指定の例については, 第 2.6 節 のサンプル・プログラムを参照してください。

表 2-4 は,パーセント記号 (%) ( または %n$) というシーケンスと変換指定子の間に指定できる文字を示しています。これらの文字は省略可能ですが,指定する場合は, 表 2-4 に示した順に指定する必要があります。

表 2-4 % (または% n$) と出力変換指定子の間に指定できる省略可能な文字
文字 意味
フラグ 次のフラグ文字を単独または任意の順序で組み合わせて,変換指定を変更することができる。

'
(一重引用符)
数値変換で 3 桁ごとの区切り文字を付けて書式設定することを要求する。基数を表す文字の左側の数字にだけ桁区切り文字が付けられる。桁区切り文字として使用する文字と区切り文字の位置は,プログラムの現在のロケールで定義される。
--
(ハイフン)
変換した出力ソースをそのフィールド内で左桁揃えする。
+ 符号付き変換で明示的な符号を付けることを要求する。このフラグを指定しなかった場合,符号付き変換で負の値が変換された場合にだけ,結果の先頭に符号が付加される。
space 符号付き変換の最初の文字が符号でない場合や,変換した結果,文字が生成されない場合は,符号付き変換の結果の先頭にスペースを付加する。 space と + フラグをどちらも指定した場合は, space フラグは無視される。

   

# 代替変換書式を要求する。指定した変換に応じて,異なる動作が実行される。

o (8 進数) 変換の場合は,1 桁目が 0 になるように精度が上げられる。

x (または X) 変換の場合は,0 以外の結果の先頭に 0x (または 0X) が付加される。

e,E,f,g,G 変換の場合は,結果に小数点が含まれる。整数値の場合も末尾に小数点が付加される。

g および G 変換の場合は,後続の 0 は切り捨てられない。

他の変換の場合は,# の効果は未定義である。

0 d,i,o,u,x,X,e,E,f,g,G 変換の場合,フィールド幅になるように埋め込むパッド文字として,スペースではなく 0 を使用する。 0 と -- フラグをどちらも指定した場合は, 0 フラグは無視される。d,i,o,u,x,X 変換で,精度が指定されている場合は,0 フラグは無視される。他の変換の場合は,0 フラグの動作は未定義である。

フィールド幅 最小フィールド幅は 10 進整数定数または出力ソースによって指定できる。出力ソースを指定するには,アスタリスク (*) または * n$ というシーケンスを使用する。ただし, n は,書式指定の後の n 番目の出力ソースを参照する。

最小フィールド幅は,書式ディレクティブの他のすべてのコンポーネントに従って変換を実行した後で考慮される。このコンポーネントは,次に示すように変換結果のパッド文字埋め込み処理に影響する。

変換の結果が最小フィールド幅より長い場合は,結果がそのまま書き込まれる。

変換の結果が最小幅より短い場合は,フィールド幅になるようにパッド文字が埋め込まれる。デフォルトではパッド文字はスペースである。 0 フラグが指定された場合は,パッド文字は 0 である。この場合,幅が 8 進数であることを意味するわけではない。デフォルト設定では,パッド文字は左側に埋め込まれ,マイナス記号が指定された場合は右側に埋め込まれる。

ワイド文字出力関数の場合は,フィールド幅はワイド文字の文字数で指定される。バイト出力関数の場合は,バイト数で指定される。

. (ピリオド) フィールド幅と精度を区切る。
精度 精度は次のいずれかを定義する。

  • d,i,o,u,x,X 変換の場合は表示される最小桁数

  • e,E,f 変換の場合は小数点以下の桁数

  • g および G 変換の場合は最大有効桁数

  • s または S 変換の場合は文字列から書き込まれる最大文字数

精度が他の変換指定子と組み合わせて指定された場合は,動作は未定義である。

精度は 10 進整数定数または出力ソースによって指定できる。出力ソースを指定するには,アスタリスク (*) または * n$ というシーケンスを使用する。ただし, n は,書式指定の後の n 番目の出力ソースを参照する。

ピリオドだけが指定されている場合は,精度は 0 であると解釈される。

h,l,L (または ll) h は,後続の d,i,o,u,x,X 変換指定子が short int または unsigned short int 引数に適用されることを指定する。また,h は後続の n 変換指定子が short int 引数を指すポインタに適用されることも指定する。

l (小文字のエル) は,後続の d,i,o,u,x,X 変換指定子が long int または unsigned long int 引数に適用されることを指定する。 l は,後続の n 変換指定子が long int 引数を指すポインタに適用されることも指定する。

OpenVMS Alpha システムでは,L または ll (2 つの小文字のエル) は,後続の d,i,o,u,x,X 変換指定子が __int64 または unsigned __int64 引数に適用されることを指定する。 (Alpha only)

L は,後続の e,E,f,g,G 変換指定子が long double 引数に適用されることを指定する。

l は,後続の c または s 変換指定子が wchar_t 引数に適用されることを指定する。

h,l,L のいずれかが他の変換指定子と組み合わせて指定されている場合は,動作は未定義である。

OpenVMS VAX および OpenVMS Alpha システムでは, HP C int の値は long の値と同値である。

表 2-5 は,書式設定された出力の変換指定子を示しています。

表 2-5 書式設定された出力の変換指定子
指定子 出力の種類1 説明
d,i   int 引数を符号付き 10 進形式に変換する。
o   unsigned int 引数を符号なし 8 進形式に変換する。
u   unsigned int 引数を符号なし 10 進形式に変換する (数値が 0〜4,294,967,295 の範囲の場合)。
x, X   unsigned int 引数を符号なし 16 進形式 ( 先頭の 0x は付いている場合も付いていない場合もある ) に変換する。 x 変換の場合は英字 abcdef が使用され, X 変換の場合は英字 ABCDEF が使用される。
f   float または double 引数を [--]mmm.nnnnnn. という形式に変換する。次のように,n の数は精度指定の値に等しい。

  • 精度が指定されていない場合,デフォルトは 6 である。

  • 精度が 0 で,# フラグが指定されている場合は,小数点は出力されるが,小数点以下の n は出力されない。

  • 精度が 0 で,# フラグが指定されていない場合は,小数点も出力されない。

  • 小数点が出力される場合は,その前に少なくとも 1 桁が出力される。

値は適切な桁数に四捨五入される。

e,E   float または double 引数を [--]m.nnnnnnE<pm symbol>xx という形式に変換する。 n の数は精度によって指定される。精度が指定されていない場合は,デフォルトは 6 である。精度が 0 として指定され,# フラグが指定されている場合は,小数点は出力されるが,小数点以下の n は出力されない。精度が 0 で,# フラグが指定されていない場合は,小数点も出力されない。 e 変換の場合は 'e' が出力される。E 変換の場合は 'E' が出力される。指数には常に少なくとも 2 桁が含まれる。値が 0 の場合は,指数は 0 である。
g,G   float または double 引数を f または e という形式に変換する ( または G 変換指定子が使用されている場合は E)。有効桁数は精度によって指定される。精度が 0 の場合は,有効桁数は 1 であると解釈される。使用される書式は引数の値に応じて異なる。変換の結果,指数が --4 より小さい場合や,精度以上になる場合にだけ,書式 e (または E) が使用される。それ以外の場合は,書式 f が使用される。結果の小数点以下の部分で後続の 0 は切り捨てられる。小数点以下に有効桁がある場合にだけ,小数点が出力される。
c バイト int 引数を unsigned char に変換し,結果のバイトを書き込む。

この変換指定子の前に省略可能な文字 l (小文字のエル) が指定されている場合は,この指定子は wchar_t 引数を,文字を表すバイト配列に変換し,結果の文字を出力する。フィールド幅が指定されていて,結果の文字がフィールド幅より少ないバイト数の場合は,パッド文字としてスペースが埋め込まれる。精度が指定されている場合は,動作は未定義である。

  ワイド文字 c 指定子の前に l (小文字のエル) が指定されていない場合は, int 引数は, btowc を呼び出したかのようにワイド文字に変換され,結果の文字が出力される。

c 指定子の前に l (小文字のエル) が指定されている場合は,この指定子は wchar_t 引数を,文字を表すバイト配列に変換し,結果の文字を出力する。フィールド幅が指定されていて,結果の文字がフィールド幅より少ない文字数の場合は,指定された幅になるようにスペース文字が埋め込まれる。精度が指定されている場合は,動作は未定義である。

C バイト wchar_t 引数を,文字を表すバイト配列に変換し,結果の文字を出力する。フィールド幅が指定されていて,結果の文字がフィールド幅より少ないバイト数の場合は,指定された幅になるようにスペース文字が埋め込まれる。精度が指定されている場合は,動作は未定義である。
  ワイド文字 wchar_t 引数を,文字を表すバイト配列に変換し,結果の文字を出力する。フィールド幅が指定されていて,結果の文字がフィールド幅より少ない文字数の場合は,指定された幅になるようにスペース文字が埋め込まれる。精度が指定されている場合は,動作は未定義である。
s バイト char 型の文字配列を指すポインタである引数が必要である。この引数は,ヌル文字が検出されるか,精度指定によって示される文字数になるまで,文字を出力するために使用される。精度指定が 0 の場合や,指定されていない場合は,ヌル文字までのすべての文字が出力される。

この変換指定子の前に省略可能な文字 l( 小文字のエル ) が指定されている場合は,この指定子はワイド文字コードの配列をマルチバイト文字に変換し,マルチバイト文字を出力する。 wchar_t 型のワイド文字の配列を指すポインタが引数として必要である。ヌル・ワイド文字が検出されるか,精度指定によって示されるバイト数になるまで,文字が出力される。精度指定が省略されている場合や,変換されたバイト配列のサイズより大きい場合は,ワイド文字の配列の末尾にヌル・ワイド文字が必要である。

  ワイド文字 s 指定子の前に l (小文字のエル) が指定されていない場合は,この指定子は各マルチバイト文字に対して mbrtowc を呼び出したかのように,マルチバイト文字の配列を変換し,ヌル・ワイド文字が検出されるか,または精度指定によって示されるワイド文字の文字数になるまで,結果の文字を出力する。精度指定が省略されている場合や,変換された文字配列のサイズより大きい場合は,変換された配列の末尾にヌル・ワイド文字が必要である。

この変換指定子の前に l が指定されている場合は,引数は wchar_t 型の配列を指すポインタである。ヌル・ワイド文字が検出されるか,精度指定によって示されるワイド文字の文字数になるまで,この配列から文字が出力される。精度指定が省略されている場合や,配列のサイズより大きい場合は,配列の末尾にヌル・ワイド文字が必要である。

S バイト ワイド文字コードの配列をマルチバイト文字に変換し,マルチバイト文字を出力する。 wchar_t 型のワイド文字の配列を指すポインタが引数として必要である。ヌル・ワイド文字が検出されるか,または精度指定によって示されるバイト数になるまで,文字が出力される。精度指定が省略されている場合や,変換されたバイト配列のサイズより大きい場合は,ワイド文字の配列の末尾にヌル・ワイド文字が必要である。
  ワイド文字 引数は wchar_t 型の配列を指すポインタである。ヌル・ワイド文字が検出されるか,精度指定によって示されるワイド文字の文字数になるまで,この配列から文字が出力される。精度指定が省略されている場合や,配列のサイズより大きい場合は,配列の末尾にヌル・ワイド文字が必要である。
p   void を指すポインタが引数として必要である。ポインタの値が 16 進数として出力される。
n   整数を指すポインタが引数として必要である。書式設定された出力関数に対するこの呼び出しでこれまで出力ストリームに書き込まれた文字数が整数に代入される。引数は変換されない。
%   パーセント記号を出力する。変換は実行されない。完全な変換指定は %% である。


1 バイトまたは ワイド文字。ただし,どちらも示されていない場合は,指定子の説明は両方に適用される。


前へ 次へ 目次 索引