Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Hàm mbrlen() trong C/C++

Hàm mbrlen() xác định độ dài (số byte) của một ký tự đa byte (multibyte character). Trả về số byte của ký tự đa byte mà con trỏ trỏ tới. Khai báo trong <wchar.h>.

Cú pháp

size_t mbrlen(const char *s, size_t n, mbstate_t *ps);

Tham số:

  • s – Con trỏ đến byte đầu của ký tự đa byte
  • n – Số byte tối đa kiểm tra
  • ps – Con trỏ trạng thái chuyển đổi (mbstate_t)

Ví dụ

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

int main() {
    char a[] = "s";       // Ky tu ASCII 1 byte
    mbstate_t state = {0};
    int len = mbrlen(a, 5, &state);
    printf("Do dai ky tu da byte: %d\n", len);
    return 0;
}

Kết quả

Do dai ky tu da byte: 1

Giải thích: Ký tự 's' ASCII chỉ chiếm 1 byte. mbrlen trả về 1.

Lưu ý: mbrlen() dùng cho multibyte encoding (UTF-8,Shift-JIS...). Với ASCII/UTF-8 ký tự Latin cơ bản, thường trả về 1. Với ký tự Unicode ngoài BMP (emoji, chữ Hán), có thể trả về 2-4. Hàm này an toàn hơn mblen() vì có tham số state.