名前


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 を返す。

準拠


C99

注意


mblen() の動作は現在のロケールの LC_CTYPE カテゴリに依存している。

mbrlen(3) 関数は同じ機能のより良いインタフェースを提供する。

関連項目


mbrlen(3)

openSUSE Logo

コンテンツ