引数リストへのポインターを使用して、書式設定された文字列内の文字数を返します。
構文
int _vscprintf(
const char *format,
va_list argptr
);
int _vscprintf_l(
const char *format,
_locale_t locale,
va_list argptr
);
int _vscwprintf(
const wchar_t *format,
va_list argptr
);
int _vscwprintf_l(
const wchar_t *format,
_locale_t locale,
va_list argptr
);
パラメーター
format
書式指定文字列。
argptr
引数リストへのポインター。
locale
使用するロケール。
詳細については、「書式指定構文」を参照してください。
戻り値
_vscprintf
は、文字列が出力されたか、指定された書式設定コードを使用してファイルまたはバッファーに送信された場合は、生成される文字数を返します。 返される値には、終端の null 文字は含まれません。 _vscwprintf
は、ワイド文字に対して同じ機能を果たします。
これらの関数のうち _l
サフィックスが付けられたバージョンは、現在のスレッド ロケールの代わりに渡されたロケール パラメーターを使用する点を除いて同じです。
format
が null ポインターである場合は、「パラメーターの検証」で説明されているとおり、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、関数は -1 を返し、errno
を EINVAL
に設定します。
解説
各 argument
(指定されている場合) は、format
中の対応する書式指定に応じて変換されます。 書式は通常の文字で構成され、その形式と機能は printf
の format
引数と同じです。
重要
format
がユーザー定義の文字列の場合は、null で終了して適切な数と型のパラメーターがあることを確認します。 詳細については、「バッファー オーバーランの回避」を参照してください。
Windows 10 バージョン 2004 (ビルド 19041) 以降の printf
ファミリの関数では、丸め処理の IEEE 754 の規則に従って、正確に表現可能な浮動小数点数が出力されます。 以前のバージョンの Windows では、"5" で終わる正確に表現可能な浮動小数点数は常に切り上げられていました。 IEEE 754 では、最も近い偶数に丸める ("銀行型丸め" とも呼ばれます) 必要があることが示されています。 たとえば、printf("%1.0f", 1.5)
と printf("%1.0f", 2.5)
の両方を 2 に丸める必要があります。 以前は、1.5 は 2 に、2.5 は 3 に丸められていました。 この変更は、正確に表現可能な数値にのみ影響します。 たとえば、2.35 (メモリで表される場合は 2.35000000000000008 に近い) は、2.4 に切り上げられます。 これらの関数によって実行される丸め処理では、fesetround
によって設定された浮動小数点丸めモードにも従うようになりました。 以前は、丸め処理には常に FE_TONEAREST
の動作が選択されていました。 この変更は、Visual Studio 2019 バージョン 16.2 以降を使用してビルドされたプログラムにのみ影響します。 従来の浮動小数点丸め動作を使用するには、legacy_stdio_float_rounding.obj
にリンクします。
汎用テキスト ルーチンのマップ
TCHAR.H のルーチン | _UNICODE と _MBCS が定義されていない |
_MBCS が定義されている |
_UNICODE が定義されている |
---|---|---|---|
_vsctprintf |
_vscprintf |
_vscprintf |
_vscwprintf |
_vsctprintf_l |
_vscprintf_l |
_vscprintf_l |
_vscwprintf_l |
要件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
$ | <stdio.h> |
$ | <stdio.h> または <wchar.h> |
互換性の詳細については、「 Compatibility」を参照してください。
例
vsprintf
の例を参照してください。