Provided by: manpages-ja-dev_0.5.0.0.20140515+dfsg-2_all 

名前
wcsrtombs - ワイド文字文字列をマルチバイト文字列に変換する
書式
#include <wchar.h>
size_t wcsrtombs(char *dest, const wchar_t **src,
size_t len, mbstate_t *ps);
説明
dest が NULL でなければ、 wcsrtombs() 関数は ワイド文字文字列 *src を dest が指すマルチバイト文字列 に変
換する。最大 len バイトまでが dest に書き込まれる。 シフト状態 *ps は更新される。実際の効果としては、この
変換は以下 の動作と同じになる: wcrtomb(dest, *src, ps) を呼び、成功が返ったら、 dest を書き込んだバイト数
だけ増やし、*src を 1 増やす。 そして、wcrtomb が成功を返す限りこれを繰り返す。 変換が止まる理由は 3 つ考
えられる:
1. (現在のロケールに基づいて)マルチバイト列で表現できないワイド文字に 出会った場合。この場合は、*src は不
正なワイド文字を指した状態になり、 (size_t) -1 が返され、errno に EILSEQ が設定される。
2. 長さの制限により変換が止められた場合。この場合には、*src は次に 変換されるべきワイド文字列を指した状態
になり、dest に書き込まれ たバイト数が返される。
3. ワイド文字列が終端のヌルワイド文字 (L'\0') も含めて全て 変換された場合。この際、*ps が初期状態に戻ると
いう副作用がある。 この場合には *src に NULL が設定され、dest に書き込まれた バイト数が返される (終端のヌ
ルバイト (L'\0') は数えない)。
dest が NULL ならば len は無視されて前述のように変換が行わ れるが、変換されたバイトデータはメモリに書き出
されない点と、出力先の長 さの制限がない点が異なる。
上記のいずれの場合も、ps が NULL ならば、wcsrtombs() 関数 だけが知っている静的な匿名の状態がシフト状態の
代わりに用いられる。
プログラマは少なくとも len バイトの領域を dest に確保しな ければならない。
返り値
wcsrtombs() は、変換して得られたマルチバイト列のバイト数を返す。 これには終端の null バイトは含まれな
い。 変換できないワイド文字に出会った場合には (size_t) -1 が返され、 errno に EILSEQ が設定される。
準拠
C99.
注意
wcsrtombs() の動作は現在のロケールの LC_CTYPE カテゴリに依存する。
ps に NULL を渡した際の動作はマルチスレッドセーフでない。
関連項目
iconv(3), mbsinit(3), wcrtomb(3), wcsnrtombs(3), wcstombs(3)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.65 の一部 である。プロジェクトの説明とバグ報告
に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。
GNU 2014-03-18 WCSRTOMBS(3)