Provided by: manpages-ja-dev_0.5.0.0.20210215+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; or cc -std=c99
説明
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 を返す。
準拠
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 プロジェクトのリリース 3.79 の一部 である。プロジェクト の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。