C 庫 - mblen() 函式



C 的stdlibmblen() 函式用於返回以 'str' 指向的多位元組字元的第一個位元組開頭的多位元組字元的長度(以位元組為單位)。多位元組字元由一個或多個位元組的序列組成。

mblen() 的行為取決於當前的區域設定,該區域設定包含語言和編碼引數。

語法

以下是 mblen() 函式的 C 庫語法 -

int mblen(const char *str, size_t n)

引數

此函式接受以下引數 -

  • str - 這是指向多位元組字元第一個位元組的指標。

  • n - 這是要檢查字元長度的最大位元組數。

返回值

此函式返回以下值 -

  • 如果 str 不是空指標,則返回從以 str 開頭的多位元組字元傳遞的位元組數。

  • 如果 str 指向的第一個位元組不構成有效的多位元組字元,則返回 -1。

  • 如果 str 指向空字元。它返回 0。

示例 1

在此示例中,我們建立一個基本的 c 程式來演示 mblen() 函式的使用。

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

int main() {
   char *mbstr = (char *)malloc(sizeof(char));
   int len;
   
   // first reset mblen
   mblen(NULL, 0);
   mbstr = "tutorialspoint";
   
   // display the length of a multibyte character
   len = mblen(mbstr, MB_CUR_MAX);
   printf("Length in bytes of multibyte character: %u\n", len);
   
   return 0;
}

輸出

以下是輸出 -

Length in bytes of multibyte character: 1

示例 2

讓我們建立另一個示例,我們使用 mblen() 函式獲取多位元組字元的長度。如果字串指向空字元。

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

int main() {
   char *mbstr = (char *)malloc(sizeof(char));
   int len;
   
   // first reset mblen
   mblen(NULL, 0);
   
   mbstr = NULL;
   
   // display the length of a multibyte character
   len = mblen(mbstr, MB_CUR_MAX);
   printf("Length in bytes of NULL multibyte character: %u\n", len);
   
   return 0;
}

輸出

以下是輸出 -

Length in bytes of NULL multibyte character: 0

示例 3

下面的 c 程式獲取多位元組字元的長度並顯示語句。如果字串是無效的多位元組序列。

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

int main() {
	
   // create an invalid multi-byte sequence
   const char *invalidStr = "\xE2\x80";
   
   // Set locale for UTF-8
   setlocale(LC_ALL, "en_US.utf8"); 
   
   // get the lenfth of multi-byte character.
   int len = mblen(invalidStr, MB_CUR_MAX);
   
   if (len == -1) {
       perror("Invalid multi-byte sequence");
   } else {
       printf("Length in bytes of invalid multibyte character: %d\n", len);
   }
   return 0;
}

輸出

以下是輸出 -

Invalid multi-byte sequence: Invalid or incomplete multibyte or wide character
廣告