#include <wchar.h> size_t wcrtomb(char *s, wchar_t wc, mbstate_t *ps);
A different case is when s is not NULL, but wc is a null wide character (L'\0'). In this case, the wcrtomb() function stores at the character array pointed to by s the shift sequence needed to bring *ps back to the initial state, followed by a '\0' byte. It updates the shift state *ps (i.e., brings it into the initial state), and returns the length of the shift sequence plus one, that is, the number of bytes written at s.
A third case is when s is NULL. In this case, wc is ignored, and the function effectively returns
wcrtomb(buf, L'\0', ps)
where buf is an internal anonymous buffer.
|wcrtomb()||Thread safety||MT-Unsafe race:wcrtomb/!ps|