#include <wchar.h> int mbsinit(const mbstate_t *ps);
初期状態とは文字列の変換を開始する時の状態である。状態には二種類が 存在し、一つは mbsrtowcs(3) のようなマルチバイトをワイド文字に 変換する関数で使用される。もう一つは wcsrtombs(3) のような ワイド文字をマルチバイトに変換する関数で使用される。しかし両方とも mbstate_t に格納され、初期状態として同じ表現を持つ。
8ビット符号においては全ての状態は初期状態と等価である。 UTF-8, EUC-*, BIG5, SJIS のような多バイト符号においてワイド文字から 多バイト文字への変換関数は非初期状態にはならない。 しかし mbrtowc(3) のような多バイト文字からワイド文字への変換関数では 文字の解釈の途中で非初期状態となる場合がある。
初期状態の mbstate_t を作成する方法の一つは、それをゼロに設定することである:
mbstate_t state; memset(&state,0,sizeof(mbstate_t));
Linux においては以下の方法でも同様であるが、コンパイラーの警告が 生成されるかもしれない。
mbstate_t state = { 0 };
mbsinit() は *ps が初期状態に一致するかどうかを検査する。