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