#include <wchar.h> int mbsinit(const mbstate_t *ps);
The initial state is the state at the beginning of conversion of a string. There are two kinds of state: The one used by multibyte to wide character conversion functions, such as mbsrtowcs(3) , and the one used by wide character to multibyte conversion functions, such as wcsrtombs(3) , but they both fit in a mbstate_t, and they both have the same representation for an initial state.
For 8-bit encodings, all states are equivalent to the initial state. For multibyte encodings like UTF-8, EUC-*, BIG5 or SJIS, the wide character to multibyte conversion functions never produce non-initial states, but the multibyte to wide-character conversion functions like mbrtowc(3) do produce non-initial states when interrupted in the middle of a character.
One possible way to create an mbstate_t in
initial state is to set it to zero:
mbstate_t state; memset(&state,0,sizeof(mbstate_t));
On Linux, the following works as well, but might generate compiler warnings:
mbstate_t state = { 0 };
The function mbsinit() tests whether *ps corresponds to an initial state.