.\" Copyright (c) Bruno Haible .\" .\" %%%LICENSE_START(GPLv2+_DOC_ONEPARA) .\" This is free documentation; you can redistribute it and/or .\" modify it under the terms of the GNU General Public License as .\" published by the Free Software Foundation; either version 2 of .\" the License, or (at your option) any later version. .\" %%%LICENSE_END .\" .\" References consulted: .\" GNU glibc-2 source code and manual .\" Dinkumware C library reference http://www.dinkumware.com/ .\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html .\" ISO/IEC 9899:1999 .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .\" .\" Japanese Version Copyright (c) 1999 HANATAKA Shinya .\" all rights reserved. .\" Translated Tue Jan 11 00:55:36 JST 2000 .\" by HANATAKA Shinya .\" .TH WPRINTF 3 2014\-03\-19 GNU "Linux Programmer's Manual" .SH 名前 wprintf, fwprintf, swprintf, vwprintf, vfwprintf, vswprintf \- ワイド文字を フォーマットして出力する .SH 書式 .nf \fB#include \fP \fB#include \fP .sp \fBint wprintf(const wchar_t *\fP\fIformat\fP\fB, ...);\fP \fBint fwprintf(FILE *\fP\fIstream\fP\fB, const wchar_t *\fP\fIformat\fP\fB, ...);\fP \fBint swprintf(wchar_t *\fP\fIwcs\fP\fB, size_t \fP\fImaxlen\fP\fB,\fP \fB const wchar_t *\fP\fIformat\fP\fB, ...);\fP .sp \fBint vwprintf(const wchar_t *\fP\fIformat\fP\fB, va_list \fP\fIargs\fP\fB);\fP \fBint vfwprintf(FILE *\fP\fIstream\fP\fB, const wchar_t *\fP\fIformat\fP\fB, va_list \fP\fIargs\fP\fB);\fP \fBint vswprintf(wchar_t *\fP\fIwcs\fP\fB, size_t \fP\fImaxlen\fP\fB,\fP \fB const wchar_t *\fP\fIformat\fP\fB, va_list \fP\fIargs\fP\fB);\fP .fi .sp .in -4n glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): .in .sp .ad l 上記の全ての関数: .RS 4 .\" .BR wprintf (), .\" .BR fwprintf (), .\" .BR swprintf (), .\" .BR vwprintf (), .\" .BR vfwprintf (), .\" .BR vswprintf (): _XOPEN_SOURCE\ >=\ 500 || _ISOC99_SOURCE || .br _POSIX_C_SOURCE\ >=\ 200112L; .br or \fIcc\ \-std=c99\fP .RE .ad .SH 説明 \fBwprintf\fP() ファミリーの関数は \fBprintf\fP(3) ファミリーの関数の ワイド文字版である。これらはワイド文字をフォーマットして出力する。 .PP \fBwprintf\fP() と \fBvwprintf\fP() 関数は \fIstdout\fP に出力を行なう。 \fIstdout\fP がバイト単位入出力であってはいけない。より詳しい説明は \fBfwide\fP(3) を参照すること。 .PP \fBfwprintf\fP() と \fBvfwprintf\fP() 関数は \fIstream\fP にワイド文字出力 を行なう。 \fIstream\fP がバイト単位入出力であってはいけない。 より詳しい説明は \fBfwide\fP(3) を参照すること。 .PP \fBswprintf\fP() と \fBvswprintf\fP() 関数はワイド文字の配列に ワイド文字出力を行なう。プログラマーは \fIwcs\fP に最低でも \fImaxlen\fP 文字のワイド文字を出力できる空きがあることを保証しなければ ならない。 .PP これらの関数は \fBprintf\fP(3), \fBvprintf\fP(3), \fBfprintf\fP(3), \fBvfprintf\fP(3), \fBsprintf\fP(3), \fBvsprintf\fP(3) 関数に似ているが以下の 点で異っている。 .TP \fB\(bu\fP \fIformat\fP がワイド文字列で与えられる。 .TP \fB\(bu\fP 出力がバイトではなくワイド文字で構成される。 .TP \fB\(bu\fP \fBswprintf\fP() と \fBvswprintf\fP() は \fImaxlen\fP 引き数を取るが、 \fBsprintf\fP() と \fBvsprintf\fP() は取らない (\fBsnprintf\fP() と \fBvsnprintf\fP() は \fImaxlen\fP 引き数を取るが これらの関数が Linux では、バッファーが溢れた場合でも \-1 を返さない)。 .PP \fBc\fP と \fBs\fP 変換文字の扱いが異っている: .TP \fBc\fP もし \fBl\fP 修飾子が存在しない場合は \fIint\fP 引き数は \fBbtowc\fP(3) 関数によってワイド文字に変換される。そして結果のワイド文字が出力される。 \fBl\fP 修飾子が存在する場合は \fIwint_t\fP (ワイド文字)引き数が出力される。 .TP \fBs\fP もし \fBl\fP 修飾子が存在しない場合、 \fIconst\ char\ *\fP 引き数は初期状態より始まるマルチバイト文字列を含んだ char 型の配列へのポインター(文字列へのポインター)とみなされる。 配列の文字は(最初のバイト前に初期状態で変換を開始し、それぞれの文字を \fBmbrtowc\fP(3) 関数によって)ワイド文字へと変換される。結果のワイド文字は終端の ナルワイド文字 (L\(aq\e0\(aq) の手前までが書き込まれる。精度(precision)が指定された 場合、指定された数字を超えるワイド文字は書き込まれない。精度は 書き込まれる \fIバイト\fP 数や \fI画面上の位置\fP ではなく \fIワイド文字\fP の数を指定することに注意すること。 精度がない場合には配列の終端にナルバイト (\(aq\e0\(aq) を含む必要がある。 精度を指定する場合には、配列の最後に到着する前に変換されたワイド文字の 数がそれに到達するよう、精度は十分に小さな数でなければならない。 もし \fBl\fP 修飾子が存在する場合、 \fIconst\ wchar_t\ *\fP 引き数はワイド文字の配列へのポインターとみなされる。 配列のワイド文字列は終端のナルワイド文字の手間まで出力される。 もし精度が指定された場合には指定された精度以上の文字は出力されない。 精度を指定しない場合には終端のナルワイド文字を含む必要がある。 精度を指定する場合にはそれはワイド文字の配列の大きさよりも小さくな ければならない。 .SH 返り値 これらの関数は書き込まれたワイド文字の文字数を返す。 \fBswprintf\fP() と \fBvswprintf\fP() 関数の場合は 終端のナルワイド文字は含まない。エラーが起こった場合は \-1 を返す。 .SH 準拠 C99. .SH 注意 \fBwprintf\fP() 等の動作は現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存している。 .PP \fIformat\fP 文字列が ASCII 以外のワイド文字を含んでいる場合、 実行時のロケールの \fBLC_CTYPE\fP カテゴリーがコンパイル時の \fBLC_CTYPE\fP カテゴリーと 一致している場合にのみプログラムは正常に動作する。これは \fIwchar_t\fP の表現がロケールやプラットホームに依存していることに原因がある。 (glibc ではワイド文字として Unicode (ISO\-10646) のコードポイントを 使用している。他のプラットホームではそうではない。同様に ISO C99 の \eunnnn 形式の汎用文字名称はこの問題を解決しない。) このため国際化されたプログラムでは \fIformat\fP 文字列を ASCII ワイド 文字のみにするか、実行時に国際化された方法で構成する必要がある (例えば \fBgettext\fP() と \fBiconv\fP() や \fBmbstowcs\fP() を組み合わて使用する)。 .SH 関連項目 .\" .BR wscanf (3) \fBfprintf\fP(3), \fBfputwc\fP(3), \fBfwide\fP(3), \fBprintf\fP(3), \fBsnprintf\fP(3) .SH この文書について この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man\-pages/ に書かれている。