wprintf、fwprintf、swprintf、wprintf_s、fwprintf_s、swprintf_s、snwprintf_s
| ヘッダー <wchar.h> で定義 |
||
| (1) | ||
| int wprintf( const wchar_t* format, ... ); |
(C95 以降) (C99まで) |
|
| int wprintf( const wchar_t* restrict format, ... ); |
(C99以降) | |
| (2) | ||
| int fwprintf( FILE* stream, const wchar_t* format, ... ); |
(C95 以降) (C99まで) |
|
| int fwprintf( FILE* restrict stream, const wchar_t* restrict format, ... ); |
(C99以降) | |
| (3) | ||
| int swprintf( wchar_t* buffer, size_t bufsz, const wchar_t* format, ... ); |
(C95 以降) (C99まで) |
|
| int swprintf( wchar_t* restrict buffer, size_t bufsz, const wchar_t* restrict format, ... ); |
(C99以降) | |
| int wprintf_s( const wchar_t* restrict format, ... ); |
(4) | (C11 以降) |
| int fwprintf_s( FILE* restrict stream, const wchar_t* restrict format, ... ); |
(5) | (C11 以降) |
| int swprintf_s( wchar_t* restrict buffer, rsize_t bufsz, const wchar_t* restrict format, ... ); |
(6) | (C11 以降) |
| int snwprintf_s( wchar_t* restrict s, rsize_t n, const wchar_t* restrict format, ... ); |
(7) | (C11 以降) |
指定された場所からデータをロードし、それをワイド文字列の等価物に変換して、さまざまなシンクに結果を書き込みます。
streamに書き込みます。- format に変換指定子
%nが存在する場合 %sに対応する引数がヌルポインタの場合-
formatまたはbufferがヌルポインタである - bufsz がゼロまたは RSIZE_MAX / sizeof(wchar_t) より大きい。
- 文字列および文字変換指定子でエンコーディングエラーが発生した場合
- (
swprintf_sのみ) 書き込まれるワイド文字数(ヌル文字を含む)が bufsz を超える場合。
- format に変換指定子
- すべての境界チェック関数と同様に、
wprintf_s、fwprintf_s、swprintf_s、およびsnwprintf_sは、実装によって __STDC_LIB_EXT1__ が定義され、ユーザーが <stdio.h> をインクルードする前に __STDC_WANT_LIB_EXT1__ を整数定数 1 に定義した場合にのみ利用可能であることが保証されています。
目次 |
[編集] パラメータ
| stream | - | 書き込む出力ファイルストリーム |
| buffer | - | 書き込み先のワイド文字列へのポインタ |
| bufsz | - | bufsz - 1 個までのワイド文字と、ヌル終端文字を書き込むことができます。 |
| format | - | データの解釈方法を指定するヌル終端ワイド文字列へのポインタ |
| ... | - | 印刷するデータを指定する引数。 デフォルト引数プロモーション の後のいずれかの引数が、対応する変換指定子によって期待される型でない場合、または format によって必要とされる引数より少ない場合、動作は未定義です。 format によって必要とされる引数より多い場合、余分な引数は評価されて無視されます。 |
format文字列は、通常のワイド文字(%を除く)で構成されており、これらは変更されずに、および変換指定子が出力ストリームにコピーされます。各変換指定子は次の形式です
- 先頭の
%文字。
- 先頭の
- (オプション) 変換の動作を変更する1つ以上のフラグ
-
-: 変換の結果はフィールド内で左寄せされます (デフォルトは右寄せ)。 -
+: 符号付き変換の結果には常に符号が前置されます (デフォルトでは負の場合にのみマイナスが前置されます)。 - space: 符号付き変換の結果が符号文字で始まらない場合、または空の場合、スペースが結果の前に付加されます。
+フラグが存在する場合は無視されます。 -
#: 変換の代替形式が実行されます。正確な効果については以下の表を参照してください。それ以外の場合、動作は未定義です。 -
0: 整数および浮動小数点数の変換の場合、フィールドのパディングにはスペース文字ではなく先行ゼロが使用されます。整数数の場合、精度が明示的に指定されている場合は無視されます。このフラグを使用する他の変換では、未定義の動作が発生します。-フラグが存在する場合は無視されます。
-
- (オプション) 最小フィールド幅を指定する整数値または
*。結果は、右寄せの場合は左側、左寄せの場合は右側に、必要に応じて(デフォルトで)スペース文字でパディングされます。*が使用される場合、幅は int 型の追加引数で指定され、変換される引数の前に配置されます。精度引数がある場合はその後に配置されます。引数の値が負の場合、-フラグが指定されたことになり、フィールド幅は正になります(注:これは最小幅であり、値が切り捨てられることはありません)。
- (オプション) 最小フィールド幅を指定する整数値または
- (オプション) 精度を指定する、整数または
*に続く.、あるいは何もなし。*が使用される場合、精度は int 型の追加引数で指定され、変換される引数の前に配置されます。最小フィールド幅引数がある場合はその後に配置されます。この引数の値が負の場合、無視されます。数値も*も使用されない場合、精度はゼロとみなされます。精度の正確な効果については、以下の表を参照してください。
- (オプション) 精度を指定する、整数または
- (オプション) 引数のサイズを指定する長さ修飾子 (変換フォーマット指定子と組み合わせて、対応する引数の型を指定します)。
- 変換フォーマット指定子。
以下のフォーマット指定子が利用可能です
| 変換 指定子 |
説明 | 期待される 引数型 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| 長さ修飾子→ | hh | h | なし | l | ll | j | z | t | L | |
| C99以降のみ利用可能→ | はい | はい | はい | はい | はい | |||||
%
|
リテラル % を書き込みます。完全な変換指定子は %% でなければなりません。 |
N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A |
c
|
単一の文字を書き込みます。
|
N/A | N/A | int |
wint_t |
N/A | N/A | N/A | N/A | N/A |
s
|
文字列を書き込みます。
|
N/A | N/A | char* |
wchar_t* |
N/A | N/A | N/A | N/A | N/A |
di
|
符号付き整数を10進数表現 [-]dddd に変換します。
|
signed char |
short |
int |
long |
long long |
※ |
N/A | ||
o
|
符号なし整数を8進数表現 oooo に変換します。
|
unsigned char |
unsigned short |
unsigned int |
unsigned long |
unsigned long long |
ptrdiff_t の符号付きバージョン。 |
N/A | ||
xX
|
符号なし整数を16進数表現 hhhh に変換します。
|
N/A | ||||||||
u
|
符号なし整数を10進数表現 dddd に変換します。
|
N/A | ||||||||
fF (C99)
|
浮動小数点数を [-]ddd.ddd の形式で10進数表記に変換します。
|
N/A | N/A | double |
double (C99) |
N/A | N/A | N/A | N/A | long double |
eE
|
浮動小数点数を10進指数表記に変換します。
|
N/A | N/A | N/A | N/A | N/A | N/A | |||
aA
(C99) |
浮動小数点数を16進指数表記に変換します。
|
N/A | N/A | N/A | N/A | N/A | N/A | |||
gG
|
浮動小数点数を値と精度に応じて10進数または10進指数表記に変換します。
|
N/A | N/A | N/A | N/A | N/A | N/A | |||
n
|
この関数への呼び出しによってこれまでに書き込まれた文字数を返します。
|
signed char* |
short* |
int* |
long* |
long long* |
※ |
N/A | ||
p
|
ポインタを定義する実装定義の文字シーケンスを書き込みます。 |
N/A | N/A | void* |
N/A | N/A | N/A | N/A | N/A | N/A |
| 注釈 | ||||||||||
|
浮動小数点変換関数は無限大を 非数は 変換 char、unsigned char、signed char、short、および unsigned short を印刷するために使用される変換指定子は、デフォルト引数プロモーション のプロモートされた型を期待しますが、印刷する前にその値は char、unsigned char、signed char、short、および unsigned short に変換されます。可変長関数が呼び出される際に行われるプロモーションにより、これらの型の値を渡すことは安全です。 固定幅文字型(int8_t など)の正しい変換指定子は、ヘッダー <inttypes.h> で定義されています(ただし、PRIdMAX、PRIuMAX などは メモリ書き込み変換指定子 各変換指定子の処理後にはシーケンスポイントが存在します。これにより、同じ変数に複数の 変換指定子が不正な場合、動作は未定義です。 | ||||||||||
[編集] 戻り値
[編集] 注釈
ナロー文字列は必要な出力バッファサイズを決定できる snprintf を提供しますが、ワイド文字列には同等のものはありません(snwprintf_s まで)(C11以降)。バッファサイズを決定するために、プログラムは swprintf を呼び出し、戻り値を確認し、より大きなバッファを再割り当てして、成功するまで再試行する必要がある場合があります。
snwprintf_s は、swprintf_s とは異なり、切り捨てはほとんどの境界チェック関数でエラーとして扱われますが、結果を s が指す配列に収まるように切り捨てます。
[編集] 例
#include <locale.h> #include <wchar.h> int main(void) { char narrow_str[] = "z\u00df\u6c34\U0001f34c"; // or "zß水🍌" // or "\x7a\xc3\x9f\xe6\xb0\xb4\xf0\x9f\x8d\x8c"; wchar_t warr[29]; // the expected string is 28 characters plus 1 null terminator setlocale(LC_ALL, "en_US.utf8"); swprintf(warr, sizeof warr / sizeof* warr, L"Converted from UTF-8: '%s'", narrow_str); wprintf(L"%ls\n", warr); }
出力
Converted from UTF-8: 'zß水🍌'
[編集] 参考文献
- C23標準 (ISO/IEC 9899:2024)
- 7.29.2.1 The fwprintf function (p: TBD)
- 7.29.2.3 The swprintf function (p: TBD)
- 7.29.2.11 The wprintf function (p: TBD)
- K.3.9.1.1 The fwprintf_s function (p: TBD)
- K.3.9.1.4 The swprintf_s function (p: TBD)
- K.3.9.1.13 The wprintf_s function (p: TBD)
- C17標準 (ISO/IEC 9899:2018)
- 7.29.2.1 The fwprintf function (p: TBD)
- 7.29.2.3 The swprintf function (p: TBD)
- 7.29.2.11 The wprintf function (p: TBD)
- K.3.9.1.1 The fwprintf_s function (p: TBD)
- K.3.9.1.4 The swprintf_s function (p: TBD)
- K.3.9.1.13 The wprintf_s function (p: TBD)
- C11標準 (ISO/IEC 9899:2011)
- 7.29.2.1 The fwprintf function (p: 403-410)
- 7.29.2.3 The swprintf function (p: 416)
- 7.29.2.11 The wprintf function (p: 421)
- K.3.9.1.1 The fwprintf_s function (p: 628)
- K.3.9.1.4 The swprintf_s function (p: 630-631)
- K.3.9.1.13 The wprintf_s function (p: 637-638)
- C99標準 (ISO/IEC 9899:1999)
- 7.24.2.1 The fwprintf function (p: 349-356)
- 7.24.2.3 The swprintf function (p: 362)
- 7.24.2.11 The wprintf function (p: 366)
[編集] 関連項目
| (C99)(C11)(C11)(C11)(C11) |
stdout、ファイルストリーム、またはバッファに書式化された出力を書き出す (関数) |
| (C95)(C95)(C95)(C11)(C11)(C11)(C11) |
stdout、ファイルストリームに書式化されたワイド文字出力を書き出す または可変長引数リストを使用してバッファから (関数) |
| (C95) |
ファイルストリームにワイド文字列を書き込む (関数) |
| C++ ドキュメント ( wprintf, fwprintf, swprintf)
| |