1 .\" Copyright (c) Bruno Haible <haible@clisp.cons.org>
3 .\" This is free documentation; you can redistribute it and/or
4 .\" modify it under the terms of the GNU General Public License as
5 .\" published by the Free Software Foundation; either version 2 of
6 .\" the License, or (at your option) any later version.
8 .\" References consulted:
9 .\" GNU glibc-2 source code and manual
10 .\" Dinkumware C library reference http://www.dinkumware.com/
11 .\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
14 .\" About this Japanese page, please contact to JM Project <JM@linux.or.jp>
15 .\" Translated Sat Oct 23 15:38:11 JST 1999
16 .\" by FUJIWARA Teruyoshi <fujiwara@linux.or.jp>
18 .TH WCSRTOMBS 3 2011-09-28 "GNU" "Linux Programmer's Manual"
20 wcsrtombs \- ワイド文字文字列をマルチバイト文字列に変換する
25 .BI "size_t wcsrtombs(char *" dest ", const wchar_t **" src ,
26 .BI " size_t " len ", mbstate_t *" ps );
29 \fIdest\fP が NULL ポインタでなければ、
32 ワイド文字文字列 \fI*src\fP を \fIdest\fP が指すマルチバイト文字列
33 に変換する。最大 \fIlen\fP バイトまでが \fIdest\fP に書き込まれる。
34 シフト状態 \fI*ps\fP は更新される。実際の効果としては、この変換は以下
36 .IR "wcrtomb(dest, *src, ps)"
38 \fIdest\fP を書き込んだバイト数だけ増やし、\fI*src\fP を 1 増やす。
39 そして、wcrtomb が成功を返す限りこれを繰り返す。
42 (現在のロケールに基づいて)マルチバイト列で表現できないワイド文字に
43 出会った場合。この場合は、\fI*src\fP は不正なワイド文字を指した状態になり、
47 に \fBEILSEQ\fP が設定される。
49 2. 長さの制限により変換が止められた場合。この場合には、\fI*src\fP は次に
50 変換されるべきワイド文字列を指した状態になり、\fIdest\fP に書き込まれ
53 3. ワイド文字列が終端の NULL ワイド文字 (L\(aq\\0\(aq) も含めて全て
54 変換された場合。この際、\fI*ps\fP が初期状態に戻るという副作用がある。
55 この場合には \fI*src\fP に NULL が設定され、\fIdest\fP に書き込まれた
56 バイト数が返される (終端の NULL は数えない)。
58 \fIdest\fP が NULL ならば \fIlen\fP は無視されて前述のように変換が行わ
59 れるが、変換されたバイトデータはメモリに書き出されない点と、出力先の長
62 上記のいずれの場合も、\fIps\fP が NULL ポインタならば、wcsnrtombs 関数
63 だけが知っている静的な匿名の状態がシフト状態の代わりに用いられる。
65 プログラマは少なくとも \fIlen\fP バイトの領域を \fIdest\fP に確保しな
69 は、変換して得られたマルチバイト列のバイト数を返す。
70 これには終端の null バイトは含まれない。
75 に \fBEILSEQ\fP が設定される。
83 \fIps\fP に NULL を渡した際の動作はマルチスレッドセーフでない。