mbrlen

多バイト文字 (multibyte character) のバイト長を取得します.

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

mbrlen 関数は s が指すバイトで始まる最大 n バイトを検査し,次の多バイト文字を完結するために必要なバイト数 (シフトシーケンスを含めて) を返します.

mbrlen 関数の動作はその時点のロケール (locale) の LC_CTYPE カテゴリの影響を受けます.

引数

  • s: 多バイト文字
  • n: 多バイト文字の最大バイト長
  • ps: 変換状態

戻り値

  • 次の n 個以下のバイトによって正しい多バイト文字が完結する場合: 多バイト文字を完結するバイト数
  • 次の n 個のバイトだけでは多バイト文字が完結せず,n 個のバイトすべてが処理されている場合: (size_t)(-2)
  • 表現形式エラーが発生する場合: (size_t)(-1) ※

※: errno に EILSEQマクロの値を格納します.また変換状態 ps がどうなるかは未規定です.

Cプログラマの必読書

たくさんあるC言語関連の書籍の中でも特に役に立った本です.よかったら参考にしてみてください.

C実践プログラミング 第3版

C言語の実践的参考書.少々値段は張りますが初心者を脱しようとしている人は絶対に読むべきです.
文法だけでなく,コーディングスタイルやデバッグなど文字通り「実践的」なことが書かれているので非常にためになります. オライリーの本は,読みにくい本が多いのですが本書はとても読みやすくオススメです.


C言語ポインタ完全制覇 (標準プログラマーズライブラリ)

ポインタの解説書としては最高の書籍です.
この1冊でポインタを完全に理解することができます.全くの初学者が読むには敷居が高いですが,入門書を読み終えた後に読むと非常に有益です.