名 前
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/ に 書 か れ て い る 。