mbtowc -
マルチバイト列をワイド文字に変換する
#include <stdlib.h>
int mbtowc(wchar_t *pwc, const char *s, size_t n);
この関数が用いられる場合、通常
s が NULL でなく
pwc も NULL
でない。この場合は
mbtowc() 関数は
s
から始まる 最大
n
バイトのマルチバイト文字列を検査して、次の完全なマルチバイト
文字を取り出し、それをワイド文字に変換して
*pwc に格納する。
同時に mbtowc
関数のみが使用する内部状態を更新する。
s がヌルバイト ('\0')
以外を指している場合は、
s
から消費するバイト数を返す。
s
がヌルバイトを指している場合には
0 を返す。
s から始まる
n
バイトが完全なマルチバイト文字を含んで
いない場合や不正なマルチバイト列を含んでいる場合には
mbtowc() は -1
を返す。マルチバイト文字列に冗長なシフトシーケンスが
含まれていると
n >=
MB_CUR_MAX
の場合もこのようなことが
起こりえる。
s が NULL でなく
pwc が NULL
の場合は
mbtowc() 関数は
上記と同様に動作するが、変換したワイド文字はメモリーには書き込まれない。
三番目の場合として
s が NULL の場合は
pwc と
n は 無視される。
mbtowc()
関数のみが使用するシフト状態は初期状態に
戻される。そして文字符号がシフト状態に依存するならばゼロ以外を、文字符号が
状態によらないならばゼロを返す。
s が NULL でなければ
mbtowc()
関数は
s
から消費した
バイト数を、
s
がヌル文字を指している場合はゼロを、
変換に失敗した場合は
-1 を返す。
s が NULL ならば
mbtowc()
関数は文字符号がシフト状態に依存
していればゼロ以外を、状態によらなければゼロを返す。
この節で使用されている用語の説明については、
attributes(7) を参照。
インターフェース |
属性 |
値 |
mbtowc() |
Thread safety |
MT-Unsafe race |
POSIX.1-2001, POSIX.1-2008, C99.
mbtowc()
の動作は現在のロケールの
LC_CTYPE
カテゴリーに依存している。
この関数はマルチスレッドでは安全ではない。
mbrtowc(3) 関数は
同じ機能のより良いインターフェースを提供する。
MB_CUR_MAX(3),
mblen(3),
mbrtowc(3),
mbstowcs(3),
wcstombs(3),
wctomb(3)
この man ページは Linux
man-pages
プロジェクトのリリース
5.10
の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/
に書かれている。