mblen -
次のマルチバイト文字のバイト数を返す
#include <stdlib.h>
int mblen(const char *s, size_t n);
s が NULL でなければ、
mblen() 関数は
s
から始まる最大
n
バイトのマルチバイト文字列を検査して、
次の完全なマルチバイト文字を取り出す。これには
mblen()
関数のみが使用する静的で名前のないシフト状態が使用される。
マルチバイト文字がヌルワイド文字でなければ
s から消費される
バイト数を返す。マルチバイト文字がヌルワイド文字ならば
0 を返す。
s から始まる
n
バイトが完全なマルチバイト文字を含んで
いなければ、
mblen() は -1
を返す。マルチバイト文字列
に冗長なシフトシーケンスが含まれていると、
n が
MB_CUR_MAX
以上の場合にも
このようなことが起こりえる。
s
から始まるマルチバイト文字列が次の完全な文字の前に
不正なマルチバイト列を含んでいる場合にも、
mblen() は -1 を返す。
s が NULL ならば、
mblen()
関数はこの関数のみが
使用するシフト状態を初期化状態に戻し、シフト状態を使用した文字符号の場合に
はゼロ以外を、文字符号がシフト状態を持たない場合にはゼロを返す。
mblen() 関数は
s
から始まるマルチバイト列を検査して
ヌルワイド文字以外を確認した場合にはそのバイト数を返す。
ヌルワイド文字を確認した場合にはゼロを返す。不正なマルチバイト列に
遭遇した場合や完全なマルチバイト文字を解析できなかった場合には
-1 を返す。
この節で使用されている用語の説明については、
attributes(7) を参照。
インターフェース |
属性 |
値 |
mblen() |
Thread safety |
MT-Unsafe race |
POSIX.1-2001, POSIX.1-2008, C99.
mblen()
の動作は現在のロケールの
LC_CTYPE
カテゴリーに依存している。
mbrlen(3)
関数は同じ機能のより良いインターフェースを提供する。
mbrlen(3)
この man ページは Linux
man-pages
プロジェクトのリリース
5.10
の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/
に書かれている。