Input subroutines
The wint_t data type is required to represent the wide character code value as well as the end-of-file (EOF) marker. For example, consider the case of the fgetwc subroutine, which returns a wide character code value:
| Subroutine return value declaration | Description |
|---|---|
| wchar_t fgetwc(); | If the wchar_t data type is defined as a char value, the y-umlaut symbol cannot be distinguished from the end-of-file (EOF) marker in the ISO8859-1 code set. The 0xFF code point is a valid character (y umlaut). Hence, the return value cannot be the wchar_t data type. A data type is needed that can hold both the EOF marker and all the code points in a code set. |
| int fgetwc(); | On some machines, the int data type is defined to be 16 bits. When the wchar_t data type is larger than 16 bits, the int value cannot represent all the return values. |
The wint_t data type is therefore needed to represent the fgetwc subroutine return value. The wint_t data type is defined in the wchar.h file.
| Subroutine return value | Description |
|---|---|
| fgetwc | Gets next wide character from a stream. |
| fgetws | Gets a string of wide characters from a stream. |
| getwc | Gets next wide character from a stream. |
| getwchar | Gets next wide character from standard input. |
| getws | Gets a string of wide characters from a standard input. |
| ungetwc | Pushes a wide character onto a stream. |