_set_printf_count_output
printf
、_printf_l
、wprintf
、_wprintf_l
ファミリ関数の%n形式のサポートを有効または無効にします。
構文
int _set_printf_count_output(
int enable
);
パラメーター
enable
%n のサポートを有効にする場合は 0 以外の値、%n のサポートを無効にする場合は 0。
プロパティ値または戻り値
この関数を呼び出す前の %n サポートの状態。%n サポートが有効だった場合は 0 以外。無効だった場合は 0。
解説
セキュリティ上の理由から、 %n 書式指定子のサポートは、 printf
とそのすべてのバリアントで既定で無効になっています。 %nがprintf
形式の仕様で検出された場合、既定の動作では、Parameter 検証で説明されているように、無効なパラメーター ハンドラーが呼び出されます。 引数が 0 以外の _set_printf_count_output
を呼び出すと、 printf
ファミリ関数は、 %n Format 仕様構文の説明に従って解釈されます: printf
関数と wprintf
関数。
要件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
_set_printf_count_output |
<stdio.h> |
互換性の詳細については、「 Compatibility」を参照してください。
例
// crt_set_printf_count_output.c
#include <stdio.h>
int main()
{
int e;
int i;
e = _set_printf_count_output( 1 );
printf( "%%n support was %sabled.\n",
e ? "en" : "dis" );
printf( "%%n support is now %sabled.\n",
_get_printf_count_output() ? "en" : "dis" );
printf( "12345%n6789\n", &i ); // %n format should set i to 5
printf( "i = %d\n", i );
}
%n support was disabled.
%n support is now enabled.
123456789
i = 5