- C 標準庫
- C 庫 - 首頁
- C 庫 - <assert.h>
- C 庫 - <complex.h>
- C 庫 - <ctype.h>
- C 庫 - <errno.h>
- C 庫 - <fenv.h>
- C 庫 - <float.h>
- C 庫 - <inttypes.h>
- C 庫 - <iso646.h>
- C 庫 - <limits.h>
- C 庫 - <locale.h>
- C 庫 - <math.h>
- C 庫 - <setjmp.h>
- C 庫 - <signal.h>
- C 庫 - <stdalign.h>
- C 庫 - <stdarg.h>
- C 庫 - <stdbool.h>
- C 庫 - <stddef.h>
- C 庫 - <stdio.h>
- C 庫 - <stdlib.h>
- C 庫 - <string.h>
- C 庫 - <tgmath.h>
- C 庫 - <time.h>
- C 庫 - <wctype.h>
- C 標準庫資源
- C 庫 - 快速指南
- C 庫 - 有用資源
- C 庫 - 討論
- C 程式設計資源
- C 程式設計 - 教程
- C - 有用資源
C 庫 - mblen() 函式
C 的stdlib 庫 mblen() 函式用於返回以 '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
廣告