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 | 잘못된 문자 시퀀스가 감지되었습니다. |