### 4.13 `fgetwc`, `getwc`—get a wide character from a file or stream

Synopsis

         #include <stdio.h>
         #include <wchar.h>
         wint_t fgetwc(FILE *fp);

         #include <stdio.h>
         #include <wchar.h>
         wint_t _fgetwc_r(struct _reent *ptr, FILE *fp);

         #include <stdio.h>
         #include <wchar.h>
         wint_t getwc(FILE *fp);

         #include <stdio.h>
         #include <wchar.h>
         wint_t _getwc_r(struct _reent *ptr, FILE *fp);

Description
Use `fgetwc` to get the next wide character from the file or stream identified by fp. As a side effect, `fgetwc` advances the file's current position indicator.

The `getwc` function or macro functions identically to `fgetwc`. It may be implemented as a macro, and may evaluate its argument more than once. There is no reason ever to use it.

`_fgetwc_r` and `_getwc_r` are simply reentrant versions of `fgetwc` and `getwc` that are passed the additional reentrant structure pointer argument: ptr.

Returns
The next wide character cast to `wint_t`), unless there is no more data, or the host system reports a read error; in either of these situations, `fgetwc` and `getwc` return `WEOF`.

You can distinguish the two situations that cause an `EOF` result by using the `ferror` and `feof` functions.

Portability
C99, POSIX.1-2001