GETC(3) | Library Functions Manual | GETC(3)

# NAME

`fgetc`, `getc`, `getchar`, `getc_unlocked`, `getchar_unlocked`, `getw` — get next character or word from input stream

# SYNOPSIS

`#include <stdio.h>`

int
`fgetc`(FILE *stream);

int
`getc`(FILE *stream);

int
`getchar`(void);

int
`getc_unlocked`(FILE *stream);

int
`getchar_unlocked`(void);

int
`getw`(FILE *stream);

# DESCRIPTION

The `fgetc`() function obtains the next input character (if present) from the stream pointed at by stream, or the next character pushed back on the stream via ungetc(3).

The `getc`() function acts essentially identically to `fgetc`(), but is a macro that expands in-line.

The `getchar`() function is equivalent to `getc`() with the argument stdin.

The `getc_unlocked`() and `getchar_unlocked`() functions perform the same action, but do not obtain the stream lock. They require that the stream first be locked with flockfile(3) for thread safe operation.

The `getw`() function obtains the next int (if present) from the stream pointed at by stream.

# RETURN VALUES

If successful, these routines return the next requested object from the stream. If the stream is at end-of-file or a read error occurs, the routines return `EOF`. The routines feof(3) and ferror(3) must be used to distinguish between end-of-file and error. If an error occurs, the global variable errno is set to indicate the error. The end-of-file condition is remembered, even on a terminal, and all subsequent attempts to read will return `EOF` until the condition is cleared with clearerr(3).

# SEE ALSO

ferror(3), flockfile(3), fopen(3), fread(3), getwc(3), putc(3), ungetc(3)

# STANDARDS

The `fgetc`(), `getc`(), and `getchar`() functions conform to ANSI X3.159-1989 (“ANSI C89”). The `getc_unlocked`() and `getchar_unlocked`() functions conform to.

# HISTORY

The `getc`() and `getw`() functions first appeared in Version 1 AT&T UNIX; `getchar`() in Version 2 AT&T UNIX; and `fgetc`() in Version 7 AT&T UNIX. The `getc_unlocked`() and `getchar_unlocked`() functions have been available since OpenBSD 2.5.

# BUGS

Since `EOF` is a valid integer value, feof(3) and ferror(3) must be used to check for failure after calling `getw`().

Since the size and byte order of an int may vary from one machine to another, `getw`() is not recommended for portable applications.

July 25, 2025 | Debian