#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() と 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 変換文字の扱いが異っている:
| インターフェース | 属性 | 値 |
| wprintf(), fwprintf(), swprintf(), vwprintf(), vfwprintf(), vswprintf() |
Thread safety | MT-Safe locale |
format 文字列が ASCII 以外のワイド文字を含んでいる場合、 実行時のロケールの LC_CTYPE カテゴリーがコンパイル時の LC_CTYPE カテゴリーと 一致している場合にのみプログラムは正常に動作する。これは wchar_t の表現がロケールやプラットホームに依存していることに原因がある。 (glibc ではワイド文字として Unicode (ISO-10646) のコードポイントを 使用している。他のプラットホームではそうではない。同様に ISO C99 の \unnnn 形式の汎用文字名称はこの問題を解決しない。) このため国際化されたプログラムでは format 文字列を ASCII ワイド 文字のみにするか、実行時に国際化された方法で構成する必要がある (例えば gettext() と iconv() や mbstowcs() を組み合わて使用する)。
[man1]
[man2]
[man3]
[man4]
[man5]
[man6]
[man7]
[man8]
[a]
[b]
[c]
[d]
[e]
[f]
[g]
[h]
[i]
[j]
[k]
[l]
[m]
[n]
[o]
[p]
[q]
[r]
[s]
[t]
[u]
[v]
[w]
[x]
[y]
[z]