plucky (3) wcsnrtombs.3.gz

Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       wcsnrtombs - ワイド文字文字列をマルチバイト文字列に変換する

書式

       #include <wchar.h>

       size_t wcsnrtombs(char *dest, const wchar_t **src, size_t nwc,
                         size_t len, mbstate_t *ps);

   glibc 向けの機能検査マクロの要件 (feature_test_macros(7)  参照):

       wcsnrtombs():
           glibc 2.10 以降:
               _POSIX_C_SOURCE >= 200809L
           glibc 2.10 より前:
               _GNU_SOURCE

説明

       wcsnrtombs()   関数は、 wcsrtombs()  関数に似ている。ただし、 変換されるワイド文字の数が(*src から数えて)
       nwc 文字に制限 されている点が異なる。

       dest が NULL でなければ、 wcsnrtombs()  関数は ワイド文字文字列の最大 nwc 個までのワイド文字を dest  から
       始まるマルチバイト文字列に変換する。dest  には最大 len バイ トまで書き込まれる。シフト状態 *ps は更新され
       る。実際の効果とし ては、この変換は以下の動作と同じになる: wcrtomb(dest, *src, ps) を呼び、成功が返ったら
       dest  を書き込んだバイト数だけ増やし、*src を 1 増やす。 そして、wcrtomb が成功を返す限りこれを繰り返す。
       変換が止まる理由は 3 つ考えられる:

       1. (現在のロケールに基づいて)マルチバイト列で表現できないワイド文字に 出会った場合。この場合は、*src は不
          正なワイド文字を指した状態になり、 (size_t) -1 が返され、errnoEILSEQ が設定される。

       2. ヌルワイド文字  (L'\0') に出会わないで nwc 個のワイド文字を 変換した場合か、長さの制限によって変換が止
          められた場合。 この場合には、*src は次に変換されるべきワイド文字を指した状態になり、 dest に書き込まれ
          たバイト数が返される。

       3. ワイド文字列が終端の  L'\0' (これには *ps を初期状態に戻すという副作用がある) も含めて全て変換された場
          合。この場合には *src に NULL  が設定され、  dest  に書き込まれたバイト数が返される  (終端のヌルバイト
          ('\0') は数えない)。

       dest が NULL ならば len は無視されて前述のように変換が行わ れるが、変換されたバイトデータはメモリーに書き
       出されない点と、出力先の長 さの制限がない点が異なる。

       上記のいずれの場合も、ps が NULL ならば、wcsnrtombs() 関数 だけが知っている静的な匿名の状態がシフト状態の
       代わりに用いられる。

       プログラマは少なくとも len バイトの領域を dest に確保しな ければならない。

返り値

       wcsrtombs()   は、変換して得られたマルチバイト列のバイト数を返す。  これには終端の  null バイトは含まれな
       い。 変換できないワイド文字に出会った場合には (size_t) -1 が返され、 errnoEILSEQ が設定される。

属性

       この節で使用されている用語の説明については、 attributes(7) を参照。

       ┌─────────────────┬───────────────┬───────────────────────────────┐
       │インターフェース属性                            │
       ├─────────────────┼───────────────┼───────────────────────────────┤
       │wcsnrtombs()     │ Thread safety │ MT-Unsafe race:wcsnrtombs/!ps │
       └─────────────────┴───────────────┴───────────────────────────────┘

準拠

       POSIX.1-2008.

注意

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

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

関連項目

       iconv(3), mbsinit(3), wcsrtombs(3)

この文書について

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