<wchar.h>

The <wchar.h> include file declares the supported subset of the ISO/C Multibyte support extensions defined in ISO/IEC 9889:1990/Amendment 1:1993(E) extensions. The following functions are declared in <wchar.h>:

fgetwc putwc wcscpy wcsstr
fgetws putwchar wcscspn wcstod
fputwc swprintf wcsftime wcstok
fputws swscanf wcslen wcstol
getwc ungetwc wcsncat wcstoul
getwchar vswprintf wcsncmp wcswidth
getwmccoll wcrtomb wcsncpy wcsxfrm
mbrlen wcscat wcspbrk wctob
mbrtowc wcschr wcsrchr wcwidth
mbsinit wcscmp wcsrtombs  
mbsrtowcs wcscoll wcsspn  

You do not need to include <stdio.h> and <stdarg.h> to use this include file.

<wchar.h> also defines the following types and constants:

mbstate_t:
Conversion state information needed when converting between sequences of multibyte characters and wide characters.

size_t:
typedef for the type of the value returned by sizeof.

wchar_t:
typedef for a wide character constant.

wint_t:
An integral type unchanged by integral promotions, that can hold any value corresponding to members of the extended character set, as well as WEOF (see below).

FILE:
The FILE structure type is defined in <stdio.h>. Stream functions use a pointer to the FILE type to get access to a given stream. The system uses the information in the FILE structure to maintain the stream. The C standard streams stdin, stdout, and stderr are also defined in <stdio.h>.

va_list:
This type is also defined in <stdio.h>.

NULL:
A pointer that never points to a data object.

WEOF:
Expands to a constant expression of type wint_t, whose value does not correspond to any member of the extended character set. It indicates EOF.

You can perform wide character input/output on the streams described in the ISO/IEC 9899:1990 standard, subclause 7.9.2. This standard expands the definition of a stream to include an orientation for both text and binary streams. After you have associated a stream with an external file, but before you have performed any operations on it, the stream does not have any orientation. Once you apply a wide character input or output function to a stream that does not have orientation, the stream becomes wide-oriented. Similarly, once you apply a byte input or output function to a stream without orientation, the stream becomes byte-oriented.

After you establish a stream's orientation, the only way to change it is to make a successful call to the freopen function, which removes a stream's orientation.



Locales and Localization


setlocale -- Set Locale
<locale.h>