Manpages

名 前

wcrtomb − ワ イ ド 文 字 1 つ を マ ル チ バ イ ト 列 に 変 換 す る

書 式

#include <wchar.h>

size_t wcrtomb(char *s, wchar_t wc, mbstate_t *ps);

説 明

こ の 関 数 が 主 に 使 わ れ る の は 、 s が NULL で な く 、 wc が ヌ ル ワ イ ド 文 字 (L'\0') で な い 場 合 で あ る 。 こ の 場 合 に は 、 wcrtomb() 関 数 は ワ イ ド 文 字 wc を マ ル チ バ イ ト 表 現 に 変 換 し 、 s が 指 す char 型 の 配 列 に こ れ を 格 納 す る 。 こ の 関 数 は シ フ ト 状 態 *ps を 更 新 し 、 出 力 さ れ た マ ル チ バ イ ト 表 現 の 長 さ 、 す な わ ち s に 書 き 込 ま れ た バ イ ト 数 を 返 す 。 別 の ケ ー ス と し て は 、 s は NULL で な い が wc が ヌ ル ワ イ ド 文 字 (L'\0') の こ と が あ る 。 こ の 場 合 の wcrtomb() 関 数 は 、 *ps を 初 期 状 態 に 戻 す の に 必 要 な シ フ ト シ ー ケ ン ス を s が 指 す char 型 配 列 に 格 納 し 、 そ の 後 に '\0' を 格 納 す る 。 こ の 関 数 は シ フ ト 状 態 *ps を 更 新 し (つ ま り 初 期 状 態 に 戻 し )、 シ フ ト シ ー ケ ン ス の 長 さ に 1 を 加 え た 値 を 返 す 。 こ の 値 は s に 書 き 込 ま れ た バ イ ト 数 で あ る 。 三 番 目 の ケ ー ス は 、 s が NULL の 時 で あ る 。 こ の 場 合 に は wc は 無 視 さ れ 、 関 数 の 実 際 の 動 き と し て は

wcrtomb(buf, L'\0', ps) が 返 さ れ る 。 こ こ で 、 buf は 内 部 的 な 無 名 バ ッ フ ァ ー で あ る 。 以 上 の い ず れ の 場 合 も 、 ps が NULL な ら ば シ フ ト 状 態 は 用 い ら れ ず 、 wcrtomb() 関 数 だ け が 知 っ て い る 静 的 な 匿 名 の 状 態 が 使 わ れ る 。

返 り 値

wcrtomb() 関 数 は 、 s が 指 す バ イ ト 列 に 書 き 込 ま れ た バ イ ト 数 、 あ る い は 書 き 込 ま れ た で あ ろ う バ イ ト 数 を 返 す 。 wc を (現 在 の ロ ケ ー ル に 従 っ て )マ ル チ バ イ ト 列 で 表 現 で き な け れ ば 、 (size_t) −1 が 返 さ れ 、 errnoEILSEQ が 設 定 さ れ る 。

準 拠

C99.

注 意

wcrtomb() の 動 作 は 、 現 在 の ロ ケ ー ル の LC_CTYPE カ テ ゴ リ ー に 依 存 す る 。

ps に NULL を 渡 し た 際 の 動 作 は マ ル チ ス レ ッ ド セ ー フ で な い 。

関 連 項 目

mbsinit(3), wcsrtombs(3)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。