mbrlen 서브루틴

용도

문자의 바이트 수를 가져옵니다(재시작 가능).

라이브러리

표준 라이브러리libc.a

구문

#include <wchar.h>
size_t mbrlen (const char *s, size_t n, mbstate_t *ps ) 

설명

S가 널 포인터가 아닌 경우, mbrlen은 s가 가리키는 문자를 구성하는 바이트 수를 결정합니다. 그것은 다음과 같습니다.

 mbstate_t internal;
 mbrtowc(NULL, s, n, ps != NULL ? ps : &internal);

Ps가 널 포인터인 경우, mbrlen 함수는 프로그램 시작 시 초기 변환 상태로 초기화되는 자체 내부 mbstate_t 객체를 사용합니다. 그렇지 않으면 ps가 가리키는 mbstate_t 객체가 관련 문자 시퀀스의 현재 변환 상태를 완전히 설명하는 데 사용됩니다. 구현은 이 사양에 정의된 함수가 mbrlen을 호출하지 않는 것처럼 동작합니다.

이 함수의 동작은 현재 로캘의 LC_CTYPE 카테고리의 영향을 받습니다.

리턴 값

Mbrlen 함수는 다음 중 적용되는 첫 번째 값을 반환합니다:

항목 설명
0 다음 N 바이트 이하가 널 와이드 문자에 해당하는 문자를 완성하는 경우
양수 다음 n 바이트 이하가 유효한 문자를 완성하는 경우 반환되는 값은 문자를 완성하는 바이트 수입니다.
(size_t)-2 다음 n 바이트가 불완전하지만 잠재적으로 유효한 문자에 기여하고 모든 n 바이트가 처리된 경우. N이 MB_CUR_MAX 매크로 값 이상인 경우, 이 경우는 s가 중복된 시프트 시퀀스를 가리키는 경우에만 발생할 수 있습니다(상태 종속 인코딩을 사용하는 구현의 경우).
(size_t)-1 인코딩 오류가 발생하여 다음 n바이트 이하의 바이트가 완전하고 유효한 문자에 기여하지 못하는 경우입니다. 이 경우 EILSEQ는 errno에 저장되고 변환 상태는 정의되지 않습니다.

오류 코드

다음과 같은 경우 mbrlen 함수가 실패할 수 있습니다:

항목 설명
EINVAL ps는 잘못된 변환 상태가 포함된 개체를 가리킵니다.
EILSEQ 잘못된 문자 시퀀스가 감지되었습니다.