### 4.34 `getchar`—read a character (macro)

Synopsis

    #include <stdio.h>
    int getchar(void);

    int _getchar_r(struct _reent *reent);

Description
`getchar` is a macro, defined in `stdio.h`. You can use `getchar` to get the next single character from the standard input stream. As a side effect, `getchar` advances the standard input’s current position indicator.

The alternate function `_getchar_r` is a reentrant version. The extra argument reent is a pointer to a reentrancy structure.

Returns
The next character (read as an `unsigned char`, and cast to `int`), unless there is no more data, or the host system reports a read error; in either of these situations, `getchar` returns `EOF`.

You can distinguish the two situations that cause an `EOF` result by using ‘`ferror(stdin)`’ and ‘`feof(stdin)`’.

Portability
ANSI C requires `getchar`; it suggests, but does not require, that `getchar` be implemented as a macro.

Supporting OS subroutines required: `close`, `fstat`, `isatty`, `lseek`, `read`, `sbrk`, `write`.