fgetwc, getwc
From cppreference.com
 
 
 
 
 
  C 
 Concurrency support (C11)
 File input/output 
 
  
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 Types and objects
 Functions
 File access
 Unformatted input/output
 Formatted input
(C11)(C11)(C11)
(C95)(C95)(C95)(C11)(C11)(C11)
(C99)(C99)(C99)(C11)(C11)(C11)
(C99)(C99)(C99)(C11)(C11)(C11)
   Direct input/output
 Formatted output
(C99)(C11)(C11)(C11)(C11)
(C95)(C95)(C95)(C11)(C11)(C11)(C11)
  (C99)(C11)(C11)(C11)(C11)
(C95)(C95)(C95)(C11)(C11)(C11)(C11)
 File positioning
 Error handling
 Operations on files
(C11)
(C11)
Defined in header 
 
 
<wchar.h> 
 wint_t fgetwc( FILE *stream );
 
 (since C95) 
wint_t getwc( FILE *stream );
 
 (since C95) 
Reads the next wide character from the given input stream. getwc() may be implemented as a macro and may evaluate stream more than once.
[edit] Parameters
 stream
 -
 to read the wide character from
[edit] Return value
The next wide character from the stream or WEOF on failure.
If the failure has been caused by end-of-file condition, additionally sets the eof indicator (see feof() ) on stream. If the failure has been caused by some other error, sets the error indicator (see ferror() ) on stream.
If an encoding error occurred, additionally sets errno  to EILSEQ.
[edit] Example
Run this code
#include <stdio.h> #include <stdlib.h> #include <wchar.h> #include <errno.h> #include <locale.h> int main(void) { setlocale (LC_ALL, "en_US.utf8"); FILE *fp = fopen ("fgetwc.dat", "w"); if(!fp) { perror ("Can't open file for writing"); return EXIT_FAILURE ; } fputs ("кошка\n", fp); fclose (fp); fp = fopen ("fgetwc.dat", "r"); if(!fp) { perror ("Can't open file for reading"); return EXIT_FAILURE ; } wint_t wc; errno = 0; while ((wc = fgetwc(fp)) != WEOF) putwchar (wc); if (ferror (fp)) { if (errno == EILSEQ ) puts ("Character encoding error while reading."); else puts ("I/O error when reading"); } else if (feof (fp)) puts ("End of file reached successfully"); fclose (fp); }
Output:
кошка
[edit] References
- C17 standard (ISO/IEC 9899:2018):
- 7.29.3.1 The fgetwc function (p: 307-308)
 
- 7.29.3.6 The getwc function (p: 309)
 
- C11 standard (ISO/IEC 9899:2011):
- 7.29.3.1 The fgetwc function (p: 421-422)
 
- 7.29.3.6 The getwc function (p: 424)
 
- C99 standard (ISO/IEC 9899:1999):
- 7.24.3.1 The fgetwc function (p: 367)
 
- 7.24.3.6 The getwc function (p: 369)
 
[edit] See also
C++ documentation  for fgetwc