fgetwc
, getwc
, fgetwc_unlocked
, getwc_unlocked
—get a wide character from a file or streamSynopsis
#include <stdio.h> #include <wchar.h> wint_t fgetwc(FILE *fp); #define _GNU_SOURCE #include <stdio.h> #include <wchar.h> wint_t fgetwc_unlocked(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 _fgetwc_unlocked_r(struct _reent *ptr, FILE *fp); #include <stdio.h> #include <wchar.h> wint_t getwc(FILE *fp); #define _GNU_SOURCE #include <stdio.h> #include <wchar.h> wint_t getwc_unlocked(FILE *fp); #include <stdio.h> #include <wchar.h> wint_t _getwc_r(struct _reent *ptr, FILE *fp); #include <stdio.h> #include <wchar.h> wint_t _getwc_unlocked_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.
fgetwc_unlocked
is a non-thread-safe version of fgetwc
.
fgetwc_unlocked
may only safely be used within a scope
protected by flockfile() (or ftrylockfile()) and funlockfile(). This
function may safely be used in a multi-threaded program if and only
if they are called while the invoking thread owns the (FILE *)
object, as is the case after a successful call to the flockfile() or
ftrylockfile() functions. If threads are disabled, then
fgetwc_unlocked
is equivalent to fgetwc
.
The getwc
and getwc_unlocked
functions or macros functions identically
to fgetwc
and fgetwc_unlocked
. 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
, _getwc_r
, _fgetwc_unlocked_r
, and _getwc_unlocked_r
are simply reentrant versions of the above functions 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
fgetwc
and getwc
are required by C99 and POSIX.1-2001.
fgetwc_unlocked
and getwc_unlocked
are GNU extensions.