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 は、検査される最大バイト数を表します。

戻り値

stringNULLの場合、 mblen() 関数は以下を戻します。
  • アクティブなロケールが混合バイトのストリングを許可する場合は非ゼロ。 関数は、状態変数を初期化します。
  • それ以外の場合は、ゼロ。
stringNULLでない場合、 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);
}

関連情報