Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all
名前
wprintf, fwprintf, swprintf, vwprintf, vfwprintf, vswprintf - ワイド文字を フォーマットし て出力する
書式
#include <stdio.h> #include <wchar.h> int wprintf(const wchar_t *format, ...); int fwprintf(FILE *stream, const wchar_t *format, ...); int swprintf(wchar_t *wcs, size_t maxlen, const wchar_t *format, ...); int vwprintf(const wchar_t *format, va_list args); int vfwprintf(FILE *stream, const wchar_t *format, va_list args); int vswprintf(wchar_t *wcs, size_t maxlen, const wchar_t *format, va_list args); glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照): 上記の全ての関数: _XOPEN_SOURCE >= 500 || _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
説明
wprintf() ファミリーの関数は printf(3) ファミリーの関数の ワイド文字版である。これらはワ イド文字をフォーマットして出力する。 wprintf() と vwprintf() 関数は stdout に出力を行なう。 stdout がバイト単位入出力であって はいけない。より詳しい説明は fwide(3) を参照すること。 fwprintf() と vfwprintf() 関数は stream にワイド文字出力 を行なう。 stream がバイト単位 入出力であってはいけない。 より詳しい説明は fwide(3) を参照すること。 swprintf() と vswprintf() 関数はワイド文字の配列に ワイド文字出力を行なう。プログラマー は wcs に最低でも maxlen 文字のワイド文字を出力できる空きがあることを保証しなければ ならな い。 これらの関数は printf(3), vprintf(3), fprintf(3), vfprintf(3), sprintf(3), vsprintf(3) 関 数に似ているが以下の 点で異っている。 • format がワイド文字列で与えられる。 • 出力がバイトではなくワイド文字で構成される。 • swprintf() と vswprintf() は maxlen 引数を取るが、 sprintf() と vsprintf() は取 らない (snprintf() と vsnprintf() は maxlen 引数を取るが これらの関数が Linux で は、バッファーが溢れた場合でも -1 を返さない)。 c と s 変換文字の扱いが異っている: c もし l 修飾子が存在しない場合は int 引数は btowc(3) 関数によってワイド文字に変換さ れる。そして結果のワイド文字が出力される。 l 修飾子が存在する場合は wint_t (ワイド 文字)引数が出力される。 s もし l 修飾子が存在しない場合、 const char * 引数は初期状態より始まるマルチバイト文 字列を含んだ char 型の配列へのポインター(文字列へのポインター)とみなされる。 配列の 文字は(最初のバイト前に初期状態で変換を開始し、それぞれの文字を mbrtowc(3) 関数に よって)ワイド文字へと変換される。結果のワイド文字は終端の ナルワイド文字 (L'\0') の 手前までが書き込まれる。精度(precision)が指定された 場合、指定された数字を超えるワ イド文字は書き込まれない。精度は 書き込まれる バイト 数や 画面上の位置 ではなく ワ イド文字 の数を指定することに注意すること。 精度がない場合には配列の終端にナルバイ ト ('\0') を含む必要がある。 精度を指定する場合には、配列の最後に到着する前に変換さ れたワイド文字の 数がそれに到達するよう、精度は十分に小さな数でなければならない。 もし l 修飾子が存在する場合、 const wchar_t * 引数はワイド文字の配列へのポインター とみなされる。 配列のワイド文字列は終端のナルワイド文字の手間まで出力される。 もし 精度が指定された場合には指定された精度以上の文字は出力されない。 精度を指定しない場 合には終端のナルワイド文字を含む必要がある。 精度を指定する場合にはそれはワイド文字 の配列の大きさよりも小さくな ければならない。
返り値
これらの関数は書き込まれたワイド文字の文字数を返す。 swprintf() と vswprintf() 関数の場 合は 終端のナルワイド文字は含まない。エラーが起こった場合は -1 を返す。
属性
この節で使用されている用語の説明については、 attributes(7) を参照。 ┌─────────────────────────┬───────────────┬────────────────┐ │インターフェース │ 属性 │ 値 │ ├─────────────────────────┼───────────────┼────────────────┤ │wprintf(), fwprintf(), │ Thread safety │ MT-Safe locale │ │swprintf(), vwprintf(), │ │ │ │vfwprintf(), vswprintf() │ │ │ └─────────────────────────┴───────────────┴────────────────┘
準拠
POSIX.1-2001, POSIX.1-2008, C99.
注意
wprintf() 等の動作は現在のロケールの LC_CTYPE カテゴリーに依存している。 format 文字列が ASCII 以外のワイド文字を含んでいる場合、 実行時のロケールの LC_CTYPE カテ ゴリーがコンパイル時の LC_CTYPE カテゴリーと 一致している場合にのみプログラムは正常に動作 する。これは wchar_t の表現がロケールやプラットホームに依存していることに原因がある。 (glibc ではワイド文字として Unicode (ISO-10646) のコードポイントを 使用している。他のプ ラットホームではそうではない。同様に ISO C99 の \unnnn 形式の汎用文字名称はこの問題を解決 しない。) このため国際化されたプログラムでは format 文字列を ASCII ワイド 文字のみにする か、実行時に国際化された方法で構成する必要がある (例えば gettext() と iconv() や mbstowcs() を組み合わて使用する)。
関連項目
fprintf(3), fputwc(3), fwide(3), printf(3), snprintf(3)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの 説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。