mblen() — マルチバイト文字の長さの計算
形式
#include <stdlib.h>
int mblen(const char *string, size_t n);言語レベル
ANSI
スレッド・セーフ
いいえ
代わりに mbrlen() を使用してください。
ロケール依存
この関数の振る舞いは、現行ロケールの LC_CTYPE カテゴリーの影響を受ける可能性があります。 この関数は、LOCALETYPE(*LOCALEUCS2) または LOCALETYPE(*LOCALEUTF) をコンパイル・コマンドで指定した場合、現行ロケールの LC_UNI_CTYPE カテゴリーによって影響を受ける可能性があります。 詳しくは、 CCSID とロケールについてを参照してください。
説明
mblen() 関数は、 stringが指すマルチバイト文字の長さ (バイト単位) を判別します。 n は、検査される最大バイト数を表します。
戻り値
string が NULLの場合、
mblen() 関数は以下を戻します。- アクティブなロケールが混合バイトのストリングを許可する場合は非ゼロ。 関数は、状態変数を初期化します。
- それ以外の場合は、ゼロ。
string が NULLでない場合、
mblen() は以下を戻します。- string がヌル文字を指す場合は、ゼロ。
- マルチバイト文字を構成するバイト数。
- string が有効なマルチバイト文字を指さない場合は、-1。
注:
mblen()、 mbtowc()、および wctomb() 関数は、静的に割り振られた独自のストレージを使用するため、再始動できません。 ただし、 mbrlen()、 mbrtowc()、および wcrtomb() は再始動可能です。例
この例では、
mblen() および mbtowc() を使用して、マルチバイト文字を単一のワイド文字に変換します。#include <stdio.h>
#include <stdlib.h>
int length, temp;
char string [6] = "w";
wchar_t arr[6];
int main(void)
{
/* Initialize internal state variable */
length = mblen(NULL, MB_CUR_MAX);
/* Set string to point to a multibyte character */
length = mblen(string, MB_CUR_MAX);
temp = mbtowc(arr,string,length);
arr[1] = L'\0';
printf("wide character string: %ls\n", arr);
}