書式指定構文: printf 関数と wprintf 関数
printf、wprintf、および関連する関数への書式文字列の引数の構文について説明します。 これらの関数のセキュリティを強化したバージョンを使用できます。詳細については、「CRT のセキュリティ機能」を参照してください。 個々の関数の詳細については、特定の関数のドキュメントを参照してください。 これらの関数一覧については、「ストリーム入出力」を参照してください。
省略可能なフィールドと必須フィールドで構成される書式指定には、次の形式があります。
%[flags] [width] [.precision] [{h | l | ll | w | I | I32 | I64}] type
書式指定の各フィールドは、特定の書式オプションまたは変換指定子を示す数値です。 必須の type の文字では、引数に適用する変換の種類を指定します。 省略可能な flags、width、および precision のフィールドは、追加の書式の側面を制御します。 基本的な書式指定には、文字列変換を指定するパーセント記号と type の文字 (%s など) が含まれています。 パーセント記号の後に書式フィールドとしての意味を持たない文字が続く場合、その文字は変更されずに出力にコピーされます。 パーセント記号の文字を出力するには、%% を使用します。
書式指定のフィールドは、引数の変換および書式設定の次の側面を制御します。
type
関連付けられた argument が文字、文字列、整数、または浮動小数点数として解釈されるかどうかを決定する、必須の変換指定子の文字。 詳細については、「printf 関数の型フィールド文字」を参照してください。flags
出力の行揃え、記号の出力、空白、先頭のゼロ、小数点、8 進数プレフィックス、および 16 進数プレフィックスを制御する省略可能な文字 (複数可)。 詳細については、「フラグ ディレクティブ」を参照してください。 書式指定では複数のフラグを表示でき、フラグは任意の順序で表示できます。width
出力される最小文字数を指定する、省略可能な 10 進数。 詳細については、「printf 関数の文字幅指定」を参照してください。precision
文字列において出力される最大文字数、浮動小数点値における小数点文字以降の有効桁数または桁数、または整数値において出力される最小桁数を指定する、省略可能な 10 進数。 詳細については、「精度指定」の「How Precision Values Affect Type (有効桁数の値による型への影響)」を参照してください。h | l | ll | w | I | I32 | I64
対応する引数のサイズを指定する type への省略可能なプレフィックス。 詳細については、「サイズ指定」の「Size Prefixes (サイズ プレフィックス)」を参照してください。
セキュリティに関するメモ |
---|
書式指定の文字列がユーザー定義ではないことを確認してください。たとえば、名前の入力をユーザーに要求し、その入力を name という名前の文字列変数に格納するプログラムについて検討します。name を出力するには、このように実行しないでください。 printf( name ); /* Danger! If name contains "%s", program will crash */ 代わりに、このように実行します。 printf( "%s", name ); |
参照
関連項目
printf、_printf_l、wprintf、_wprintf_l