ILE C/C++ Run-Time Library Functions


getwchar() -- Get Wide Character from stdin

Format

     #include <wchar.h>
     wint_t getwchar(void);

Language Level: ANSI

Threadsafe: Yes.

Description

The getwchar() function reads the next multibyte character from stdin, converts it to a wide character, and advances the associated file position indicator for stdin. A call to the getwchar() function is equivalent to a call to getwc(stdin).

The behavior of the getwchar() function is affected by the LC_CTYPE category of the current locale. If you change the category between subsequent read operations on the same stream, undefined results can occur. Using non-wide-character functions with the getwchar() function on stdin results in undefined behavior.

Note:
This function is not available when either LOCALETYPE(*CLD) or SYSIFCOPT(*NOIFSIO) is specified on the compilation command.

Return Value

The getwchar() function returns the next wide character from stdin or WEOF. If the getwchar() function encounters EOF, it sets the EOF indicator for the stream and returns WEOF. If a read error occurs, the error indicator for the stream is set, and the getwchar() function returns WEOF. If an encoding error occurs during the conversion of the multibyte character to a wide character, the getwchar() function sets errno to EILSEQ and returns WEOF.

Use the ferror() or feof() functions to determine whether an error or an EOF condition occurred. EOF is only reached when an attempt is made to read past the last byte of data. Reading up to and including the last byte of data does not turn on the EOF indicator.

For information about errno values for getwchar(), see "fgetwc() -- Read Wide Character from Stream".

Example that uses getwchar()

This example uses the getwchar() to read wide characters from the keyboard, then prints the wide characters.


#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
 
int main(void)
{
   wint_t  wc;
 
   errno = 0;
   while (WEOF != (wc = getwchar()))
      printf("wc = %lc\n", wc);
 
   if (EILSEQ == errno) {
      printf("An invalid wide character was encountered.\n");
      exit(1);
   }
   return 0;
 
   /***************************************************************
      Assuming you enter: abcde
 
      The output should be:
 
      wc = a
      wc = b
      wc = c
      wc = d
      wc = e
   ***************************************************************/
}

Related Information


[ Top of Page | Previous Page | Next Page | Table of Contents | Index ]