Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C/C++ mbrlen() 함수 완벽 정리: 멀티바이트 문자 길이 구하기

mbrlen() 함수는 C/C++에서 멀티바이트(multibyte) 문자의 길이를 구하는 데 사용되는 표준 라이브러리 함수입니다. 이 함수는 포인터가 가리키는 멀티바이트 문자의 크기를 바이트 단위로 계산하여 반환하며, 멀티바이트 문자열을 다룰 때 문자 경계를 정확하게 파악하는 데 유용합니다.

mbrlen() 함수 문법

C 언어에서 mbrlen() 함수의 기본 문법은 다음과 같습니다.

size_t mbrlen(const char* pointer, size_t size, mbstate_t* state);

매개변수 설명

pointer − 길이를 확인할 멀티바이트 문자의 첫 번째 바이트를 가리키는 포인터입니다.

size − 검사할 최대 바이트 수입니다.

state − mbstate_t 타입 객체를 가리키는 포인터로, 현재 변환 상태(conversion state)를 저장합니다.

mbrlen() 함수 예제

다음은 C 언어에서 mbrlen() 함수를 사용하는 예제 코드입니다.

#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
int main(void) {
    char a[] = "s";
    mbstate_t s;
    int len;
    len = mbrlen(a, 5, &s);
    printf("Length of multibyte character : %d \n", len);
}

실행 결과

Length of multibyte character : 1

코드 분석

위 프로그램에서는 mbrlen() 함수를 사용하여 멀티바이트 문자의 길이를 바이트 단위로 계산하고 있습니다.

char a[] = "s";
mbstate_t s;
int len;
len = mbrlen(a, 5, &s);

문자 배열 a에는 ASCII 문자 's'가 저장되어 있으며, 이는 1바이트로 표현되는 단일 바이트 문자입니다. 따라서 mbrlen() 함수는 최대 5바이트까지 검사하도록 지정했지만, 실제로는 첫 번째 문자가 1바이트로 완성되므로 결과값으로 1을 반환하게 됩니다.

참고 사항

mbrlen() 함수는 반환값으로 여러 의미를 전달할 수 있습니다. 유효한 멀티바이트 문자가 완성되면 해당 문자의 바이트 수를 반환하고, 불완전하지만 잠재적으로 유효한 시퀀스인 경우 (size_t)-2를, 잘못된 시퀀스를 만나면 인코딩 오류를 나타내는 (size_t)-1을 반환합니다. 또한 널 문자에 도달하면 0을 반환합니다. UTF-8 같은 가변 길이 인코딩을 처리할 때 한글이나 한자 등 멀티바이트 문자를 정확히 다루려면 이 함수를 활용하는 것이 좋습니다.