_scprintf_p, _scprintf_p_l, _scwprintf_p, _scwprintf_p_l

書式設定された文字列内の文字数を返します。その際、書式指定文字列で使用されるパラメーターの順序を指定できます。

構文

int _scprintf_p(
   const char *format [,
   argument] ...
);
int _scprintf_p_l(
   const char *format,
   _locale_t locale [,
   argument] ...
);
int _scwprintf_p (
   const wchar_t *format [,
   argument] ...
);
int _scwprintf_p _l(
   const wchar_t *format,
   _locale_t locale [,
   argument] ...
);

パラメーター

format
書式指定文字列。

argument
省略可能な引数。

locale
使用するロケール。

戻り値

文字列が出力されたか、指定した書式設定コードを使用してファイルまたはバッファーに送信された場合は、生成される文字数を返します。 返される値には、終端の null 文字は含まれません。 _scwprintf_p は、ワイド文字に対して同じ機能を果たします。

_scprintf_p_scprintf の違いは、_scprintf_p では位置指定パラメーターをサポートし、これによって、書式指定文字列で引数を使用する順序を指定できることです。 詳細については、「printf_p の位置指定パラメーター」をご覧ください。

ポインターのNULL場合format、「パラメーターの検証」で説明されているように、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、これらの関数は -1 を返し、errnoEINVAL に設定します。

これらのエラー コードおよびその他のエラー コードの詳細については、「errno_doserrno_sys_errlist_sys_nerr」を参照してください。

解説

argument (指定されている場合) は、format 中の対応する書式指定に応じて変換されます。 書式は通常の文字で構成され、その形式と機能は printfformat 引数と同じです。

これらの関数のうち _l サフィックスが付けられたバージョンは、現在のスレッド ロケールの代わりに渡されたロケール パラメーターを使用する点を除いて同じです。

重要

format にユーザー定義の文字列を指定しないでください。

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 が定義されている
_sctprintf_p _scprintf_p _scprintf_p _scwprintf_p
_sctprintf_p_l _scprintf_p_l _scprintf_p_l _scwprintf_p_l

必要条件

ルーチンによって返される値 必須ヘッダー
_scprintf_p, _scprintf_p_l <stdio.h>
_scwprintf_p, _scwprintf_p_l <stdio.h> または <wchar.h>

互換性の詳細については、「 Compatibility」を参照してください。

関連項目

ストリーム入出力
_scprintf, _scprintf_l, _scwprintf, _scwprintf_l
_printf_p, _printf_p_l, _wprintf_p, _wprintf_p_l