.\" Copyright (c) Bruno Haible .\" .\" 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. .\" .\" 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 .\" .\" About this Japanese page, please contact to JM Project .\" Translated Sat Oct 23 15:38:11 JST 1999 .\" by FUJIWARA Teruyoshi .\" .TH WCSRTOMBS 3 1999-07-25 "GNU" "Linux Programmer's Manual" .SH 名前 wcsrtombs \- ワイド文字文字列をマルチバイト文字列に変換する .SH 書式 .nf .B #include .sp .BI "size_t wcsrtombs(char *" dest ", const wchar_t **" src , .BI " size_t " len ", mbstate_t *" ps ); .fi .SH 説明 \fIdest\fP が NULL ポインタでなければ、 .BR wcsrtombs () 関数は ワイド文字文字列 \fI*src\fP を \fIdest\fP が指すマルチバイト文字列 に変換する。最大 \fIlen\fP バイトまでが \fIdest\fP に書き込まれる。 シフト状態 \fI*ps\fP は更新される。実際の効果としては、この変換は以下 の動作と同じになる: .IR "wcrtomb(dest, *src, ps)" を呼び、成功が返ったら、 \fIdest\fP を書き込んだバイト数だけ増やし、\fI*src\fP を 1 増やす。 そして、wcrtomb が成功を返す限りこれを繰り返す。 変換が止まる理由は 3 つ考えられる: .PP (現在のロケールに基づいて)マルチバイト列で表現できないワイド文字に 出会った場合。この場合は、\fI*src\fP は不正なワイド文字を指した状態になり、 .I (size_t)\ \-1 が返され、 .I errno に \fBEILSEQ\fP が設定される。 .PP 2. 長さの制限により変換が止められた場合。この場合には、\fI*src\fP は次に 変換されるべきワイド文字列を指した状態になり、\fIdest\fP に書き込まれ たバイト数が返される。 .PP 3. ワイド文字列が終端の L\(aq\\0\(aq (これには \fI*ps\fP を初期状態に戻すと いう副作用がある)も含めて全て変換された場合。この場合には \fI*src\fP に NULL が設定され、\fIdest\fP に書き込まれたバイト数が返される (終端の \(aq\\0\(aq は数えない)。 .PP \fIdest\fP が NULL ならば \fIlen\fP は無視されて前述のように変換が行わ れるが、変換されたバイトデータはメモリに書き出されない点と、出力先の長 さの制限がない点が異なる。 .PP 上記のいずれの場合も、\fIps\fP が NULL ポインタならば、wcsnrtombs 関数 だけが知っている静的な匿名の状態がシフト状態の代わりに用いられる。 .PP プログラマは少なくとも \fIlen\fP バイトの領域を \fIdest\fP に確保しな ければならない。 .SH 返り値 .BR wcsrtombs () は、変換して得られたマルチバイト列のバイト数を返す。 これには終端の null バイトは含まれない。 変換できないワイド文字に出会った場合には .I (size_t)\ \-1 が返され、 .I errno に \fBEILSEQ\fP が設定される。 .SH 準拠 C99. .BR wcsrtombs () の動作は現在のロケールの .B LC_CTYPE カテゴリに依存する。 .PP \fIps\fP に NULL を渡した際の動作はマルチスレッドセーフでない。 .SH 関連項目 .BR iconv (3), .BR wcsnrtombs (3), .BR wcstombs (3)