vsprintf() — 引数データのバッファーへの出力
形式
#include <stdarg.h>
#include <stdio.h>
int vsprintf(char *target-string, const char *format, va_list arg_ptr);言語レベル
ANSI
スレッド・セーフ
はい
ロケール依存
この関数の振る舞いは、現行ロケールの LC_CTYPE カテゴリーおよび LC_NUMERIC カテゴリーの影響を受ける可能性があります。 また、この振る舞いは、LOCALETYPE(*LOCALEUCS2) または LOCALETYPE(*LOCALEUTF) がコンパイル・コマンドに対して指定されている場合は、現行ロケールの LC_UNI_CTYPE カテゴリーの影響を受ける可能性もあります。 詳しくは、 CCSID とロケールについてを参照してください。
説明
vsprintf() 関数は、一連の文字と値をフォーマット設定し、バッファー target-stringに保管します。 vsprintf() 関数は、 sprintf() 関数と同様に機能します。ただし、 arg_ptr は、プログラム内の呼び出しごとに番号が異なる引数のリストを指します。 これらの引数は、各呼び出しごとに
va_start 関数で初期化する必要があります。 対照的に、 sprintf() 関数は引数のリストを持つことができますが、そのリスト内の引数の数は、プログラムのコンパイル時に固定されます。
vsprintf() 関数は、 format内の対応するフォーマット指定子に従って、引数リスト内の各エントリーを変換します。 format は、 printf() 関数の書式ストリングと同じ書式および機能を持ちます。
戻り値
正常に実行された場合、 vsprintf() 関数は target-stringに書き込まれたバイト数を戻します。 エラーが発生した場合、 vsprintf() 関数は負の値を返します。
例
この例では、ストリングの可変値を string に割り当て、結果のストリングを出力します。
#include <stdarg.h>
#include <stdio.h>
void vout(char *string, char *fmt, ...);
char fmt1 [] = "%s %s %s\n";
int main(void)
{
char string[100];
vout(string, fmt1, "Sat", "Sun", "Mon");
printf("The string is: %s\n", string);
}
void vout(char *string, char *fmt, ...)
{
va_list arg_ptr;
va_start(arg_ptr, fmt);
vsprintf(string, fmt, arg_ptr);
va_end(arg_ptr);
}
/****************** Output should be similar to: ****************
The string is: Sat Sun Mon
*/