int __far sprintf(char __far *s, const char __far *format, ...);(C90)
int __far sprintf(char __far * restrict s, const char __far * restrict format, ...);(C99) 【V1.07以降】
int __far sprintf_tiny(char __far *s, const char __far *format, ...);(C90)
int __far sprintf_tiny(char __far * restrict s, const char __far * restrict format, ...);(C99) 【V1.07以降】
出力された文字(null文字(\0)は除きます)の数を返します。
formatに続く実引数を出力形式に変換し,sで示された配列に書き込みます。その際の変換方法は,formatが指す文字列で指定される書式に従います。領域の重なり合うオブジェクト間で複写が行われるとき,動作は保証されません。
書式に対して実引数が不足しているときの動作は保証されません。実引数が残っているにもかかわらず,書式が尽きてしまう場合,余分な実引数は評価するだけで無視されます。
書式は0個以上の指令からなります。%で始まる変換指定以外は,そのまま出力されます。変換指定は0個以上の後続の引数を取り出し,変換して出力されます。
formatは,次に示す2種類のディレクティブにより構成されます。
各変換指示は,文字“%”で始まります(出力中に“%”を入れたい場合は,書式文字列の中では“%%”とします)。“%”の後ろは,次のようになります。
%[フラグ][フィールド長][精度][サイズ][型指定文字]
任意の順に置かれた,変換指示の意味を修飾する0個以上のフラグです。フラグ文字とその意味を次に示します。
変換された値がこのフィールド長より小さい場合,左側にスペースが詰められます(前述の左詰めフラグが与えられた場合は右側にスペースが詰められます)。このフィールド長は“*”,または10進整数の形を取ります。“*”で指定した場合,int型の引数をフィールド長として使用します。負のフィールド長は,サポートしていません。負のフィールド長を指定しようとすると,正のフィールド長の前にマイナス(-)フラグが付いたものと解釈されます。
これに与えられる値は,d,i,o,u,x,X変換に対しては現れる数字の個数の最小値であり,e, f, E,F変換に対しては“.”の後ろに現れる数字の個数であり,g,G変換に対しては最大有効桁数,s変換に対しては最大バイト数です。精度は,“*”,または10進整数が後ろに続く“.”の形式を取ります。“*”を指定した場合,int型の引数を精度として使用します。負の精度を指定した場合,精度を省略したものとみなされます。“.”のみが指定された場合,精度は0とされます。精度がこれら以外の変換指示とともに現れた場合,動作は不定となります。
対応する引数のデータ型を解釈するためのデフォルトの方法を変更する,任意選択のサイズ文字hh,h,l,ll,j,z,t,およびLです。
hhを指定した場合,後ろに続くd,i,o,u,x,Xの型指定を強制的にsigned char,またはunsigned charに適用します。hhはさらに,後ろに続くnの型指定を強制的にsigned charへのポインタに適用します。(C99) 【V1.07以降】
hを指定した場合,後ろに続くd,i,o,u,x,Xの型指定を強制的にshort int,またはunsigned short intに適用します。hはさらに,後ろに続くnの型指定を強制的にshortへのポインタに適用します。
lを指定した場合,後ろに続くd,i,o,u,x,Xの型指定を強制的にlong,またはunsigned longに適用します。lはさらに,後ろに続くnの型指定を強制的にlongへのポインタに適用します。
llを指定した場合,後ろに続くd,i,o,u,x,Xの型指定を強制的にlong long,またはunsigned long longに適用します。llはさらに,後ろに続くnの型指定を強制的にlong longへのポインタに適用します。
jを指定した場合,後ろに続くd,i,o,u,x,Xの型指定を強制的にintmax_t,またはuintmax_tに適用します。jはさらに,後ろに続くnの型指定を強制的にintmax_tへのポインタに適用します。(C99) 【V1.07以降】
zを指定した場合,後ろに続くd,i,o,u,x,Xの型指定を強制的にsize_t,またはsigned intに適用します。zはさらに,後ろに続くnの型指定を強制的にsigned intへのポインタに適用します。(C99) 【V1.07以降】
tを指定した場合,後ろに続くd,i,o,u,x,Xの型指定を強制的にptrdiff_t,またはunsigned intに適用します。tはさらに,後ろに続くnの型指定を強制的にptrdiff_tへのポインタに適用します。(C99) 【V1.07以降】
Lを指定した場合,後ろに続くe,E,f,F,g,Gの型指定を強制的にlong doubleに適用します。ただし,本コンパイラではdouble型とlong double型は同じフォーマットであるため,指定による影響はありません。
F変換はC99用ライブラリのみ指定可能です。 【V1.07以降】
-Dオプション,またはstdio.hのインクルードより前にマクロ__PRINTF_TINY__を定義した場合は,sprintfの関数呼び出しをsprintf_tinyに置き換えます。sprintf_tinyは変換指定に以下の制限があります。