WPRINTF(3) | Linux Programmer's Manual | WPRINTF(3) |
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) 参照):
上記の全ての関数:
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) 関数に似ているが以下の 点で異っている。
c と s 変換文字の扱いが異っている:
これらの関数は書き込まれたワイド文字の文字数を返す。 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() を組み合わて使用する)。
この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。
2014-03-19 | GNU |