C-standard-library-c-function-mblen

提供:Dev Guides
移動先:案内検索

Cライブラリ関数-mblen()

説明

Cライブラリ関数 int mblen(const char str、size_t n)は、引数 *str が指すマルチバイト文字の長さを返します。

宣言

mblen()関数の宣言は次のとおりです。

int mblen(const char *str, size_t n)

パラメーター

  • str -これはマルチバイト文字の最初のバイトへのポインタです。
  • n -これは、文字の長さをチェックする最大バイト数です。

戻り値

mblen()関数は、null以外のワイド文字が認識された場合、strから始まるマルチバイトシーケンスから渡されたバイト数を返します。 NULLワイド文字が認識された場合、0を返します。 無効なマルチバイトシーケンスが検出された場合、または完全なマルチバイト文字を解析できなかった場合、-1を返します。

次の例は、mblen()関数の使用法を示しています。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main () {
   int len;
   char *pmbnull  = NULL;
   char *pmb = (char *)malloc( MB_CUR_MAX );
   wchar_t *pwc = L"Hi";
   wchar_t *pwcs = (wchar_t *)malloc( sizeof( wchar_t ));

   printf("Converting to multibyte string\n");
   len = wcstombs( pmb, pwc, MB_CUR_MAX);
   printf("Characters converted %d\n", len);
   printf("Hex value of first multibyte character: %#.4x\n", pmb);

   len = mblen( pmb, MB_CUR_MAX );
   printf( "Length in bytes of multibyte character %x: %u\n", pmb, len );

   pmb = NULL;

   len = mblen( pmb, MB_CUR_MAX );
   printf( "Length in bytes of multibyte character %x: %u\n", pmb, len );

   return(0);
}

次の結果を生成する上記のプログラムをコンパイルして実行しましょう-

Converting to multibyte string
Characters converted 1
Hex value of first multibyte character: 0x168c6010
Length in bytes of multibyte character 168c6010: 1
Length in bytes of multibyte character 0: 0