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

戻り値

ストリングNULL の場合、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);
}