C-standard-library-c-function-vsprintf
Cライブラリ関数-vsprintf()
説明
Cライブラリ関数 int vsprintf(char str、const char * format、va_list arg)*は、渡された引数リストを使用して、フォーマットされた出力を文字列に送信します。
宣言
以下はvsprintf()関数の宣言です。
int vsprintf(char *str, const char *format, va_list arg)
パラメーター
- str -これは、結果の文字列が格納されるchar要素の配列です。
- format -これは、strに書き込まれるテキストを含むC文字列です。 オプションで、後続の追加の引数で指定された値で置き換えられ、要求に応じてフォーマットされる埋め込みフォーマットタグを含めることができます。 書式タグのプロトタイプ-*%[flags] [width] [。precision] [length] specifier *、以下で説明します-
Sr.No. | Specifier & Output |
---|---|
1 |
c キャラクター |
2 |
d or i 符号付き10進整数 |
3 |
e e文字を使用した科学表記法(仮数/指数) |
4 |
E E文字を使用した科学表記法(仮数/指数) |
5 |
f 10進浮動小数点 |
6 |
g %eまたは%fの短い方を使用します。 |
7 |
G %Eまたは%fの短い方を使用します |
8 |
o 符号付き8進数 |
9 |
s 文字列 |
10 |
u 符号なし10進整数 |
11 |
x 符号なし16進整数 |
12 |
X 符号なし16進整数(大文字) |
13 |
p ポインターアドレス |
14 |
n 何も印刷されない |
15 |
% キャラクター |
Sr.No. | Flags & Description |
---|---|
1 |
- 指定されたフィールド幅内で左寄せします。右揃えがデフォルトです(widthサブ指定子を参照)。 |
2 |
+ 正の数であっても、結果の前にプラス記号またはマイナス記号(+または-)を強制的に付けます。 デフォルトでは、負の数値の前に-ve記号が付きます。 |
3 |
(space) 符号が書き込まれない場合、値の前に空白スペースが挿入されます。 |
4 |
# o、x、またはX指定子とともに使用すると、ゼロ以外の値の場合、値の前にそれぞれ0、0x、または0Xが付きます。 e、E、fと共に使用すると、数字が続かない場合でも、出力に小数点が含まれるようになります。 デフォルトでは、数字が後に続かない場合、小数点は書き込まれません。 gまたはGを使用すると、結果はeまたはEと同じですが、末尾のゼロは削除されません。 |
5 |
0 スペースの代わりにゼロ(0)で数値を左に埋め込みます。ここで、埋め込みが指定されます(幅サブ指定子を参照)。 |
Sr.No. | Width & Description |
---|---|
1 |
(number) 印刷される最小文字数。 表示される値がこの数値より短い場合、結果は空白スペースで埋め込まれます 結果が大きくなっても、値は切り捨てられません。 |
2 | 幅はフォーマット文字列では指定されませんが、フォーマットされる必要がある引数の前に追加の整数値引数として指定されます。 |
Sr.No. | .precision & Description |
---|---|
1 |
.number 整数指定子(d、i、o、u、x、X)の場合-精度は、書き込まれる最小桁数を指定します。 書き込まれる値がこの数値より短い場合、結果には先行ゼロが埋め込まれます。 結果が長くなっても値は切り捨てられません。 精度0は、値0に文字が書き込まれないことを意味します。 e、E、およびf指定子の場合-これは、小数点の後に印刷される桁数です。 gおよびG指定子の場合-これは、印刷される有効数字の最大数です。 s-これは印刷される文字の最大数です。 デフォルトでは、終了ヌル文字が見つかるまで、すべての文字が印刷されます。 cタイプの場合-効果はありません。 精度が指定されていない場合、デフォルトは1です。 精度の明示的な値なしで期間が指定された場合、0が想定されます。 |
2 |
精度はフォーマット文字列では指定されませんが、フォーマットする必要がある引数に先行する追加の整数値引数として指定されます。 |
Sr.No. | Length & Description |
---|---|
1 |
h 引数は、short intまたはunsigned short intとして解釈されます(整数指定子-i、d、o、u、x、およびXにのみ適用されます)。 |
2 |
l 引数は、整数指定子(i、d、o、u、x、およびX)のlong intまたはunsigned long int、および指定子cおよびsのワイド文字またはワイド文字列として解釈されます。 |
3 |
L 引数はlong doubleとして解釈されます(浮動小数点指定子-e、E、f、g、Gにのみ適用されます)。 |
- arg -可変引数リストを表すオブジェクト。 これは、<stdarg>で定義されたva_startマクロによって初期化される必要があります。
戻り値
成功した場合、書き込まれた文字の総数が返されます。それ以外の場合、負の数が返されます。
例
次の例は、vsprintf()関数の使用法を示しています。
#include <stdio.h>
#include <stdarg.h>
char buffer[80];
int vspfunc(char *format, ...) {
va_list aptr;
int ret;
va_start(aptr, format);
ret = vsprintf(buffer, format, aptr);
va_end(aptr);
return(ret);
}
int main () {
int i = 5;
float f = 27.0;
char str[50] = "tutoriaspoint.com";
vspfunc("%d %f %s", i, f, str);
printf("%s\n", buffer);
return(0);
}
上記のプログラムをコンパイルして実行すると、次の結果が生成されます-
5 27.000000 tutoriaspoint.com